@tokamak-network/thanos-contracts
Version:
1 lines • 151 kB
JSON
{"abi":[],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"423:10792:232:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;423:10792:232;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"423:10792:232:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MerkleTrie\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie inclusion proofs. By default, this library assumes a hexary trie. One can change the trie radix constant to support other trie radixes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/trie/MerkleTrie.sol\":\"MerkleTrie\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/rlp/RLPErrors.sol\":{\"keccak256\":\"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47\",\"dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96\",\"dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/libraries/trie/MerkleTrie.sol":"MerkleTrie"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/rlp/RLPErrors.sol":{"keccak256":"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26","urls":["bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47","dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db","urls":["bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96","dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie inclusion proofs. By default, this library assumes a hexary trie. One can change the trie radix constant to support other trie radixes."},"devdoc":{"version":1,"kind":"dev","title":"MerkleTrie"},"ast":{"absolutePath":"src/libraries/trie/MerkleTrie.sol","id":116629,"exportedSymbols":{"Bytes":[112764],"MerkleTrie":[116628],"RLPReader":[115562]},"nodeType":"SourceUnit","src":"32:11184:232","nodes":[{"id":116063,"nodeType":"PragmaDirective","src":"32:23:232","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":116065,"nodeType":"ImportDirective","src":"57:37:232","nodes":[],"absolutePath":"src/libraries/Bytes.sol","file":"../Bytes.sol","nameLocation":"-1:-1:-1","scope":116629,"sourceUnit":112765,"symbolAliases":[{"foreign":{"id":116064,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"66:5:232","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":116067,"nodeType":"ImportDirective","src":"95:49:232","nodes":[],"absolutePath":"src/libraries/rlp/RLPReader.sol","file":"../rlp/RLPReader.sol","nameLocation":"-1:-1:-1","scope":116629,"sourceUnit":115563,"symbolAliases":[{"foreign":{"id":116066,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"104:9:232","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":116628,"nodeType":"ContractDefinition","src":"423:10792:232","nodes":[{"id":116075,"nodeType":"StructDefinition","src":"608:83:232","nodes":[],"canonicalName":"MerkleTrie.TrieNode","members":[{"constant":false,"id":116070,"mutability":"mutable","name":"encoded","nameLocation":"640:7:232","nodeType":"VariableDeclaration","scope":116075,"src":"634:13:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":116069,"name":"bytes","nodeType":"ElementaryTypeName","src":"634:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116074,"mutability":"mutable","name":"decoded","nameLocation":"677:7:232","nodeType":"VariableDeclaration","scope":116075,"src":"657:27:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"},"typeName":{"baseType":{"id":116072,"nodeType":"UserDefinedTypeName","pathNode":{"id":116071,"name":"RLPReader.RLPItem","nodeType":"IdentifierPath","referencedDeclaration":115043,"src":"657:17:232"},"referencedDeclaration":115043,"src":"657:17:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"id":116073,"nodeType":"ArrayTypeName","src":"657:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"}},"visibility":"internal"}],"name":"TrieNode","nameLocation":"615:8:232","scope":116628,"visibility":"public"},{"id":116079,"nodeType":"VariableDeclaration","src":"764:41:232","nodes":[],"constant":true,"documentation":{"id":116076,"nodeType":"StructuredDocumentation","src":"697:62:232","text":"@notice Determines the number of elements per branch node."},"mutability":"constant","name":"TREE_RADIX","nameLocation":"790:10:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116077,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":116078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"803:2:232","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"id":116085,"nodeType":"VariableDeclaration","src":"889:61:232","nodes":[],"constant":true,"documentation":{"id":116080,"nodeType":"StructuredDocumentation","src":"812:72:232","text":"@notice Branch nodes have TREE_RADIX elements and one value element."},"mutability":"constant","name":"BRANCH_NODE_LENGTH","nameLocation":"915:18:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116081,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":116082,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116079,"src":"936:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":116083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"949:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"936:14:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":116089,"nodeType":"VariableDeclaration","src":"1047:59:232","nodes":[],"constant":true,"documentation":{"id":116086,"nodeType":"StructuredDocumentation","src":"957:85:232","text":"@notice Leaf nodes and extension nodes have two elements, a `path` and a `value`."},"mutability":"constant","name":"LEAF_OR_EXTENSION_NODE_LENGTH","nameLocation":"1073:29:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116087,"name":"uint256","nodeType":"ElementaryTypeName","src":"1047:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":116088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":116093,"nodeType":"VariableDeclaration","src":"1175:49:232","nodes":[],"constant":true,"documentation":{"id":116090,"nodeType":"StructuredDocumentation","src":"1113:57:232","text":"@notice Prefix for even-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_EVEN","nameLocation":"1199:21:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116091,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":116092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":116097,"nodeType":"VariableDeclaration","src":"1292:48:232","nodes":[],"constant":true,"documentation":{"id":116094,"nodeType":"StructuredDocumentation","src":"1231:56:232","text":"@notice Prefix for odd-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_ODD","nameLocation":"1316:20:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116095,"name":"uint8","nodeType":"ElementaryTypeName","src":"1292:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":116096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1339:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":116101,"nodeType":"VariableDeclaration","src":"1404:44:232","nodes":[],"constant":true,"documentation":{"id":116098,"nodeType":"StructuredDocumentation","src":"1347:52:232","text":"@notice Prefix for even-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_EVEN","nameLocation":"1428:16:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116099,"name":"uint8","nodeType":"ElementaryTypeName","src":"1404:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":116100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":116105,"nodeType":"VariableDeclaration","src":"1511:43:232","nodes":[],"constant":true,"documentation":{"id":116102,"nodeType":"StructuredDocumentation","src":"1455:51:232","text":"@notice Prefix for odd-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_ODD","nameLocation":"1535:15:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116103,"name":"uint8","nodeType":"ElementaryTypeName","src":"1511:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":116104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1553:1:232","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":116133,"nodeType":"FunctionDefinition","src":"2253:281:232","nodes":[],"body":{"id":116132,"nodeType":"Block","src":"2463:71:232","nodes":[],"statements":[{"expression":{"id":116130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116120,"name":"valid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116118,"src":"2473:6:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":116123,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116110,"src":"2494:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":116125,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116108,"src":"2506:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116126,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116113,"src":"2512:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":116127,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116115,"src":"2520:5:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":116124,"name":"get","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116481,"src":"2502:3:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory[] memory,bytes32) pure returns (bytes memory)"}},"id":116128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:24:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116121,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"2482:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"2482:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:45:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2473:54:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":116131,"nodeType":"ExpressionStatement","src":"2473:54:232"}]},"documentation":{"id":116106,"nodeType":"StructuredDocumentation","src":"1561:687:232","text":"@notice Verifies a proof that a given key/value pair is present in the trie.\n @param _key Key of the node to search for, as a hex string.\n @param _value Value of the node to search for, as a hex string.\n @param _proof Merkle trie inclusion proof for the desired node. Unlike traditional Merkle\n trees, this proof is executed top-down and consists of a list of RLP-encoded\n nodes that make a path down to the target node.\n @param _root Known root of the Merkle trie. Used to verify that the included proof is\n correctly constructed.\n @return valid_ Whether or not the proof is valid."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyInclusionProof","nameLocation":"2262:20:232","parameters":{"id":116116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116108,"mutability":"mutable","name":"_key","nameLocation":"2305:4:232","nodeType":"VariableDeclaration","scope":116133,"src":"2292:17:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116107,"name":"bytes","nodeType":"ElementaryTypeName","src":"2292:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116110,"mutability":"mutable","name":"_value","nameLocation":"2332:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2319:19:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116109,"name":"bytes","nodeType":"ElementaryTypeName","src":"2319:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116113,"mutability":"mutable","name":"_proof","nameLocation":"2363:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2348:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":116111,"name":"bytes","nodeType":"ElementaryTypeName","src":"2348:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":116112,"nodeType":"ArrayTypeName","src":"2348:7:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":116115,"mutability":"mutable","name":"_root","nameLocation":"2387:5:232","nodeType":"VariableDeclaration","scope":116133,"src":"2379:13:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":116114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2282:116:232"},"returnParameters":{"id":116119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116118,"mutability":"mutable","name":"valid_","nameLocation":"2451:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2446:11:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":116117,"name":"bool","nodeType":"ElementaryTypeName","src":"2446:4:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2445:13:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":116481,"nodeType":"FunctionDefinition","src":"2830:6314:232","nodes":[],"body":{"id":116480,"nodeType":"Block","src":"2944:6200:232","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116147,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116136,"src":"2962:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2962:11:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":116149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2976:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2962:15:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20656d707479206b6579","id":116151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:23:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""},"value":"MerkleTrie: empty key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""}],"id":116146,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2954:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:49:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116153,"nodeType":"ExpressionStatement","src":"2954:49:232"},{"assignments":[116158],"declarations":[{"constant":false,"id":116158,"mutability":"mutable","name":"proof","nameLocation":"3032:5:232","nodeType":"VariableDeclaration","scope":116480,"src":"3014:23:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":116156,"nodeType":"UserDefinedTypeName","pathNode":{"id":116155,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"3014:8:232"},"referencedDeclaration":116075,"src":"3014:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":116157,"nodeType":"ArrayTypeName","src":"3014:10:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"id":116162,"initialValue":{"arguments":[{"id":116160,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116139,"src":"3052:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":116159,"name":"_parseProof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116536,"src":"3040:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory[] memory) pure returns (struct MerkleTrie.TrieNode memory[] memory)"}},"id":116161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3040:19:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3014:45:232"},{"assignments":[116164],"declarations":[{"constant":false,"id":116164,"mutability":"mutable","name":"key","nameLocation":"3082:3:232","nodeType":"VariableDeclaration","scope":116480,"src":"3069:16:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116163,"name":"bytes","nodeType":"ElementaryTypeName","src":"3069:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116169,"initialValue":{"arguments":[{"id":116167,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116136,"src":"3104:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116165,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"3088:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":112744,"src":"3088:15:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":116168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3088:21:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3069:40:232"},{"assignments":[116171],"declarations":[{"constant":false,"id":116171,"mutability":"mutable","name":"currentNodeID","nameLocation":"3132:13:232","nodeType":"VariableDeclaration","scope":116480,"src":"3119:26:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116170,"name":"bytes","nodeType":"ElementaryTypeName","src":"3119:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116176,"initialValue":{"arguments":[{"id":116174,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116141,"src":"3165:5:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116172,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3148:3:232","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":116173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3148:16:232","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":116175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3148:23:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3119:52:232"},{"assignments":[116178],"declarations":[{"constant":false,"id":116178,"mutability":"mutable","name":"currentKeyIndex","nameLocation":"3189:15:232","nodeType":"VariableDeclaration","scope":116480,"src":"3181:23:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116177,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116180,"initialValue":{"hexValue":"30","id":116179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3207:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3181:27:232"},{"body":{"id":116474,"nodeType":"Block","src":"3333:5747:232","statements":[{"assignments":[116194],"declarations":[{"constant":false,"id":116194,"mutability":"mutable","name":"currentNode","nameLocation":"3363:11:232","nodeType":"VariableDeclaration","scope":116474,"src":"3347:27:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":116193,"nodeType":"UserDefinedTypeName","pathNode":{"id":116192,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"3347:8:232"},"referencedDeclaration":116075,"src":"3347:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"id":116198,"initialValue":{"baseExpression":{"id":116195,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116158,"src":"3377:5:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116197,"indexExpression":{"id":116196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"3383:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3377:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"VariableDeclarationStatement","src":"3347:38:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116200,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"3497:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":116201,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116164,"src":"3516:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3516:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3497:29:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b657920696e646578206578636565647320746f74616c206b6579206c656e677468","id":116204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3528:48:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""},"value":"MerkleTrie: key index exceeds total key length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""}],"id":116199,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3489:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3489:88:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116206,"nodeType":"ExpressionStatement","src":"3489:88:232"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116207,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"3596:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":116208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3596:20:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":116226,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"3901:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"3901:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3901:26:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":116229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3931:2:232","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3901:32:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":116257,"nodeType":"Block","src":"4236:193:232","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":116250,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"4336:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"4336:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116252,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"4357:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116248,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"4324:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"4324:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:47:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f64652068617368","id":116254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4373:40:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""},"value":"MerkleTrie: invalid internal node hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""}],"id":116247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4316:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:98:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116256,"nodeType":"ExpressionStatement","src":"4316:98:232"}]},"id":116258,"nodeType":"IfStatement","src":"3897:532:232","trueBody":{"id":116246,"nodeType":"Block","src":"3935:295:232","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":116237,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"4097:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"4097:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":116236,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4087:9:232","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":116239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4087:30:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116234,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4070:3:232","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":116235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4070:16:232","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":116240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4070:48:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116241,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"4120:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116232,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"4058:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"4058:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4058:76:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e616c2068617368","id":116243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4156:41:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""},"value":"MerkleTrie: invalid large internal hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""}],"id":116231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4029:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4029:186:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116245,"nodeType":"ExpressionStatement","src":"4029:186:232"}]}},"id":116259,"nodeType":"IfStatement","src":"3592:837:232","trueBody":{"id":116225,"nodeType":"Block","src":"3618:273:232","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":116216,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"3768:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"3768:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":116215,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3758:9:232","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":116218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3758:30:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116213,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3741:3:232","typeDescriptions":{"typeIdentifier":"t_mag