{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"423:10792:78:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;423:10792:78;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"423:10792:78:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":\"cancun\",\"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.26+commit.8a97fa7a"},"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":"cancun","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":58646,"exportedSymbols":{"Bytes":[55153],"MerkleTrie":[58645],"RLPReader":[57578]},"nodeType":"SourceUnit","src":"32:11184:78","nodes":[{"id":58079,"nodeType":"PragmaDirective","src":"32:23:78","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":58081,"nodeType":"ImportDirective","src":"57:37:78","nodes":[],"absolutePath":"src/libraries/Bytes.sol","file":"../Bytes.sol","nameLocation":"-1:-1:-1","scope":58646,"sourceUnit":55154,"symbolAliases":[{"foreign":{"id":58080,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"66:5:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58083,"nodeType":"ImportDirective","src":"95:49:78","nodes":[],"absolutePath":"src/libraries/rlp/RLPReader.sol","file":"../rlp/RLPReader.sol","nameLocation":"-1:-1:-1","scope":58646,"sourceUnit":57579,"symbolAliases":[{"foreign":{"id":58082,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"104:9:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58645,"nodeType":"ContractDefinition","src":"423:10792:78","nodes":[{"id":58092,"nodeType":"StructDefinition","src":"608:83:78","nodes":[],"canonicalName":"MerkleTrie.TrieNode","documentation":{"id":58085,"nodeType":"StructuredDocumentation","src":"448:155:78","text":"@notice Struct representing a node in the trie.\n @custom:field encoded The RLP-encoded node.\n @custom:field decoded The RLP-decoded node."},"members":[{"constant":false,"id":58087,"mutability":"mutable","name":"encoded","nameLocation":"640:7:78","nodeType":"VariableDeclaration","scope":58092,"src":"634:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":58086,"name":"bytes","nodeType":"ElementaryTypeName","src":"634:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58091,"mutability":"mutable","name":"decoded","nameLocation":"677:7:78","nodeType":"VariableDeclaration","scope":58092,"src":"657:27:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"},"typeName":{"baseType":{"id":58089,"nodeType":"UserDefinedTypeName","pathNode":{"id":58088,"name":"RLPReader.RLPItem","nameLocations":["657:9:78","667:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":57059,"src":"657:17:78"},"referencedDeclaration":57059,"src":"657:17:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"id":58090,"nodeType":"ArrayTypeName","src":"657:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"}},"visibility":"internal"}],"name":"TrieNode","nameLocation":"615:8:78","scope":58645,"visibility":"public"},{"id":58096,"nodeType":"VariableDeclaration","src":"764:41:78","nodes":[],"constant":true,"documentation":{"id":58093,"nodeType":"StructuredDocumentation","src":"697:62:78","text":"@notice Determines the number of elements per branch node."},"mutability":"constant","name":"TREE_RADIX","nameLocation":"790:10:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58094,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":58095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"803:2:78","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"id":58102,"nodeType":"VariableDeclaration","src":"889:61:78","nodes":[],"constant":true,"documentation":{"id":58097,"nodeType":"StructuredDocumentation","src":"812:72:78","text":"@notice Branch nodes have TREE_RADIX elements and one value element."},"mutability":"constant","name":"BRANCH_NODE_LENGTH","nameLocation":"915:18:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58098,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":58099,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58096,"src":"936:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":58100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"949:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"936:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":58106,"nodeType":"VariableDeclaration","src":"1047:59:78","nodes":[],"constant":true,"documentation":{"id":58103,"nodeType":"StructuredDocumentation","src":"957:85:78","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:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1047:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":58105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":58110,"nodeType":"VariableDeclaration","src":"1175:49:78","nodes":[],"constant":true,"documentation":{"id":58107,"nodeType":"StructuredDocumentation","src":"1113:57:78","text":"@notice Prefix for even-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_EVEN","nameLocation":"1199:21:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58108,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":58109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":58114,"nodeType":"VariableDeclaration","src":"1292:48:78","nodes":[],"constant":true,"documentation":{"id":58111,"nodeType":"StructuredDocumentation","src":"1231:56:78","text":"@notice Prefix for odd-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_ODD","nameLocation":"1316:20:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58112,"name":"uint8","nodeType":"ElementaryTypeName","src":"1292:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":58113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1339:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":58118,"nodeType":"VariableDeclaration","src":"1404:44:78","nodes":[],"constant":true,"documentation":{"id":58115,"nodeType":"StructuredDocumentation","src":"1347:52:78","text":"@notice Prefix for even-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_EVEN","nameLocation":"1428:16:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58116,"name":"uint8","nodeType":"ElementaryTypeName","src":"1404:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":58117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":58122,"nodeType":"VariableDeclaration","src":"1511:43:78","nodes":[],"constant":true,"documentation":{"id":58119,"nodeType":"StructuredDocumentation","src":"1455:51:78","text":"@notice Prefix for odd-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_ODD","nameLocation":"1535:15:78","scope":58645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58120,"name":"uint8","nodeType":"ElementaryTypeName","src":"1511:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":58121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1553:1:78","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":58150,"nodeType":"FunctionDefinition","src":"2253:281:78","nodes":[],"body":{"id":58149,"nodeType":"Block","src":"2463:71:78","nodes":[],"statements":[{"expression":{"id":58147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58137,"name":"valid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58135,"src":"2473:6:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":58140,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58127,"src":"2494:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":58142,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58125,"src":"2506:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58143,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58130,"src":"2512:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":58144,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58132,"src":"2520:5:78","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":58141,"name":"get","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58498,"src":"2502:3:78","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":58145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2502:24:78","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":58138,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"2482:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2488:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"2482:11:78","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":58146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2482:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2473:54:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58148,"nodeType":"ExpressionStatement","src":"2473:54:78"}]},"documentation":{"id":58123,"nodeType":"StructuredDocumentation","src":"1561:687:78","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:78","parameters":{"id":58133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58125,"mutability":"mutable","name":"_key","nameLocation":"2305:4:78","nodeType":"VariableDeclaration","scope":58150,"src":"2292:17:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58124,"name":"bytes","nodeType":"ElementaryTypeName","src":"2292:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58127,"mutability":"mutable","name":"_value","nameLocation":"2332:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2319:19:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58126,"name":"bytes","nodeType":"ElementaryTypeName","src":"2319:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58130,"mutability":"mutable","name":"_proof","nameLocation":"2363:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2348:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":58128,"name":"bytes","nodeType":"ElementaryTypeName","src":"2348:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":58129,"nodeType":"ArrayTypeName","src":"2348:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":58132,"mutability":"mutable","name":"_root","nameLocation":"2387:5:78","nodeType":"VariableDeclaration","scope":58150,"src":"2379:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":58131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2282:116:78"},"returnParameters":{"id":58136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58135,"mutability":"mutable","name":"valid_","nameLocation":"2451:6:78","nodeType":"VariableDeclaration","scope":58150,"src":"2446:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":58134,"name":"bool","nodeType":"ElementaryTypeName","src":"2446:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2445:13:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":58498,"nodeType":"FunctionDefinition","src":"2830:6314:78","nodes":[],"body":{"id":58497,"nodeType":"Block","src":"2944:6200:78","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58164,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58153,"src":"2962:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2967:6:78","memberName":"length","nodeType":"MemberAccess","src":"2962:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":58166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2976:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2962:15:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20656d707479206b6579","id":58168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:23:78","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":58163,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2954:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2954:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58170,"nodeType":"ExpressionStatement","src":"2954:49:78"},{"assignments":[58175],"declarations":[{"constant":false,"id":58175,"mutability":"mutable","name":"proof","nameLocation":"3032:5:78","nodeType":"VariableDeclaration","scope":58497,"src":"3014:23:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":58173,"nodeType":"UserDefinedTypeName","pathNode":{"id":58172,"name":"TrieNode","nameLocations":["3014:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"3014:8:78"},"referencedDeclaration":58092,"src":"3014:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":58174,"nodeType":"ArrayTypeName","src":"3014:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"id":58179,"initialValue":{"arguments":[{"id":58177,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58156,"src":"3052:6:78","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":58176,"name":"_parseProof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58553,"src":"3040:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory[] memory) pure returns (struct MerkleTrie.TrieNode memory[] memory)"}},"id":58178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:19:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3014:45:78"},{"assignments":[58181],"declarations":[{"constant":false,"id":58181,"mutability":"mutable","name":"key","nameLocation":"3082:3:78","nodeType":"VariableDeclaration","scope":58497,"src":"3069:16:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58180,"name":"bytes","nodeType":"ElementaryTypeName","src":"3069:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58186,"initialValue":{"arguments":[{"id":58184,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58153,"src":"3104:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58182,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"3088:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3094:9:78","memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":55133,"src":"3088:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":58185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3069:40:78"},{"assignments":[58188],"declarations":[{"constant":false,"id":58188,"mutability":"mutable","name":"currentNodeID","nameLocation":"3132:13:78","nodeType":"VariableDeclaration","scope":58497,"src":"3119:26:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58187,"name":"bytes","nodeType":"ElementaryTypeName","src":"3119:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58193,"initialValue":{"arguments":[{"id":58191,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58158,"src":"3165:5:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":58189,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3148:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":58190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3152:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"3148:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":58192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3148:23:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3119:52:78"},{"assignments":[58195],"declarations":[{"constant":false,"id":58195,"mutability":"mutable","name":"currentKeyIndex","nameLocation":"3189:15:78","nodeType":"VariableDeclaration","scope":58497,"src":"3181:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58194,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58197,"initialValue":{"hexValue":"30","id":58196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3207:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3181:27:78"},{"body":{"id":58491,"nodeType":"Block","src":"3333:5747:78","statements":[{"assignments":[58211],"declarations":[{"constant":false,"id":58211,"mutability":"mutable","name":"currentNode","nameLocation":"3363:11:78","nodeType":"VariableDeclaration","scope":58491,"src":"3347:27:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":58210,"nodeType":"UserDefinedTypeName","pathNode":{"id":58209,"name":"TrieNode","nameLocations":["3347:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"3347:8:78"},"referencedDeclaration":58092,"src":"3347:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"id":58215,"initialValue":{"baseExpression":{"id":58212,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58175,"src":"3377:5:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58214,"indexExpression":{"id":58213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"3383:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3377:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"VariableDeclarationStatement","src":"3347:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58217,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"3497:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":58218,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58181,"src":"3516:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3520:6:78","memberName":"length","nodeType":"MemberAccess","src":"3516:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3497:29:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b657920696e646578206578636565647320746f74616c206b6579206c656e677468","id":58221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3528:48:78","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":58216,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3489:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:88:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58223,"nodeType":"ExpressionStatement","src":"3489:88:78"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58224,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"3596:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":58225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3596:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":58243,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"3901:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3913:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"3901:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3921:6:78","memberName":"length","nodeType":"MemberAccess","src":"3901:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":58246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3931:2:78","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3901:32:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":58274,"nodeType":"Block","src":"4236:193:78","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":58267,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"4336:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4348:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"4336:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58269,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"4357:13:78","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":58265,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"4324:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4330:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"4324:11:78","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":58270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:47:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f64652068617368","id":58271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4373:40:78","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":58264,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4316:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4316:98:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58273,"nodeType":"ExpressionStatement","src":"4316:98:78"}]},"id":58275,"nodeType":"IfStatement","src":"3897:532:78","trueBody":{"id":58263,"nodeType":"Block","src":"3935:295:78","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":58254,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"4097:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4109:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"4097:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":58253,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4087:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4087:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":58251,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4070:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":58252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4074:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"4070:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":58257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4070:48:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58258,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"4120:13:78","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":58249,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"4058:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4064:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"4058:11:78","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":58259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:76:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e616c2068617368","id":58260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4156:41:78","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":58248,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4029:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:186:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58262,"nodeType":"ExpressionStatement","src":"4029:186:78"}]}},"id":58276,"nodeType":"IfStatement","src":"3592:837:78","trueBody":{"id":58242,"nodeType":"Block","src":"3618:273:78","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":58233,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"3768:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3780:7:78","memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":58087,"src":"3768:19:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":58232,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3758:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3758:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":58230,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3741:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":58231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3745:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"3741:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":58236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3741:48:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58237,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"3791:13:78","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":58228,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"3729:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3735:5:78","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":55152,"src":"3729:11:78","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":58238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3729:76:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420726f6f742068617368","id":58239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3827:31:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_342558ec2bcba5b6370917c9dde6b4444464f0bb10525814d761abf26512f307","typeString":"literal_string \"MerkleTrie: invalid root hash\""},"value":"MerkleTrie: invalid root hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_342558ec2bcba5b6370917c9dde6b4444464f0bb10525814d761abf26512f307","typeString":"literal_string \"MerkleTrie: invalid root hash\""}],"id":58227,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3700:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3700:176:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58241,"nodeType":"ExpressionStatement","src":"3700:176:78"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":58277,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"4447:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4459:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"4447:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4467:6:78","memberName":"length","nodeType":"MemberAccess","src":"4447:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58280,"name":"BRANCH_NODE_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58102,"src":"4477:18:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4447:48:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":58349,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"5885:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5897:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"5885:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5905:6:78","memberName":"length","nodeType":"MemberAccess","src":"5885:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58352,"name":"LEAF_OR_EXTENSION_NODE_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58106,"src":"5915:29:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5885:59:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":58488,"nodeType":"Block","src":"8987:83:78","statements":[{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a20726563656976656420616e20756e706172736561626c65206e6f6465","id":58485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9012:42:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_95382f7a15c87c763345b363940580cf3535857c9d5691b55367dbf0fa2a14a3","typeString":"literal_string \"MerkleTrie: received an unparseable node\""},"value":"MerkleTrie: received an unparseable node"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_95382f7a15c87c763345b363940580cf3535857c9d5691b55367dbf0fa2a14a3","typeString":"literal_string \"MerkleTrie: received an unparseable node\""}],"id":58484,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9005:6:78","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":58486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9005:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58487,"nodeType":"ExpressionStatement","src":"9005:50:78"}]},"id":58489,"nodeType":"IfStatement","src":"5881:3189:78","trueBody":{"id":58483,"nodeType":"Block","src":"5946:3035:78","statements":[{"assignments":[58355],"declarations":[{"constant":false,"id":58355,"mutability":"mutable","name":"path","nameLocation":"5977:4:78","nodeType":"VariableDeclaration","scope":58483,"src":"5964:17:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58354,"name":"bytes","nodeType":"ElementaryTypeName","src":"5964:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58359,"initialValue":{"arguments":[{"id":58357,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"5997:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}],"id":58356,"name":"_getNodePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58602,"src":"5984:12:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TrieNode_$58092_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct MerkleTrie.TrieNode memory) pure returns (bytes memory)"}},"id":58358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5984:25:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5964:45:78"},{"assignments":[58361],"declarations":[{"constant":false,"id":58361,"mutability":"mutable","name":"prefix","nameLocation":"6033:6:78","nodeType":"VariableDeclaration","scope":58483,"src":"6027:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58360,"name":"uint8","nodeType":"ElementaryTypeName","src":"6027:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":58368,"initialValue":{"arguments":[{"baseExpression":{"id":58364,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58355,"src":"6048:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58366,"indexExpression":{"hexValue":"30","id":58365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6053:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6048:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":58363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6042:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":58362,"name":"uint8","nodeType":"ElementaryTypeName","src":"6042:5:78","typeDescriptions":{}}},"id":58367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:14:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6027:29:78"},{"assignments":[58370],"declarations":[{"constant":false,"id":58370,"mutability":"mutable","name":"offset","nameLocation":"6080:6:78","nodeType":"VariableDeclaration","scope":58483,"src":"6074:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58369,"name":"uint8","nodeType":"ElementaryTypeName","src":"6074:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":58377,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":58371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6089:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58372,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58361,"src":"6094:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":58373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6103:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6094:10:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":58375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6093:12:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6089:16:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6074:31:78"},{"assignments":[58379],"declarations":[{"constant":false,"id":58379,"mutability":"mutable","name":"pathRemainder","nameLocation":"6136:13:78","nodeType":"VariableDeclaration","scope":58483,"src":"6123:26:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58378,"name":"bytes","nodeType":"ElementaryTypeName","src":"6123:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58385,"initialValue":{"arguments":[{"id":58382,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58355,"src":"6164:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58383,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58370,"src":"6170:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":58380,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"6152:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6158:5:78","memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":55118,"src":"6152:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (bytes memory)"}},"id":58384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6152:25:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6123:54:78"},{"assignments":[58387],"declarations":[{"constant":false,"id":58387,"mutability":"mutable","name":"keyRemainder","nameLocation":"6208:12:78","nodeType":"VariableDeclaration","scope":58483,"src":"6195:25:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58386,"name":"bytes","nodeType":"ElementaryTypeName","src":"6195:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":58393,"initialValue":{"arguments":[{"id":58390,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58181,"src":"6235:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58391,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"6240:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":58388,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"6223:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6229:5:78","memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":55118,"src":"6223:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (bytes memory)"}},"id":58392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6223:33:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6195:61:78"},{"assignments":[58395],"declarations":[{"constant":false,"id":58395,"mutability":"mutable","name":"sharedNibbleLength","nameLocation":"6282:18:78","nodeType":"VariableDeclaration","scope":58483,"src":"6274:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58394,"name":"uint256","nodeType":"ElementaryTypeName","src":"6274:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58400,"initialValue":{"arguments":[{"id":58397,"name":"pathRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58379,"src":"6326:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":58398,"name":"keyRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58387,"src":"6341:12:78","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"}],"id":58396,"name":"_getSharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58644,"src":"6303:22:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes memory) pure returns (uint256)"}},"id":58399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6303:51:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6274:80:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58402,"name":"pathRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58379,"src":"6637:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6651:6:78","memberName":"length","nodeType":"MemberAccess","src":"6637:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58404,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58395,"src":"6661:18:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6637:42:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20706174682072656d61696e646572206d75737420736861726520616c6c206e6962626c65732077697468206b6579","id":58406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6701:60:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_e00c0a3c263c4cd41f6878063f5ed597e0c0df3427662467867d311719309132","typeString":"literal_string \"MerkleTrie: path remainder must share all nibbles with key\""},"value":"MerkleTrie: path remainder must share all nibbles with key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e00c0a3c263c4cd41f6878063f5ed597e0c0df3427662467867d311719309132","typeString":"literal_string \"MerkleTrie: path remainder must share all nibbles with key\""}],"id":58401,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6608:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:171:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58408,"nodeType":"ExpressionStatement","src":"6608:171:78"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":58415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58409,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58361,"src":"6802:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58410,"name":"PREFIX_LEAF_EVEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58118,"src":"6812:16:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6802:26:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58412,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58361,"src":"6832:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58413,"name":"PREFIX_LEAF_ODD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58122,"src":"6842:15:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6832:25:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6802:55:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":58461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58455,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58361,"src":"8376:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58456,"name":"PREFIX_EXTENSION_EVEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58110,"src":"8386:21:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8376:31:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":58460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58458,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58361,"src":"8411:6:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58459,"name":"PREFIX_EXTENSION_ODD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58114,"src":"8421:20:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8411:30:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8376:65:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":58480,"nodeType":"Block","src":"8866:101:78","statements":[{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a2072656365697665642061206e6f6465207769746820616e20756e6b6e6f776e20707265666978","id":58477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8895:52:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_17ad93750016927b4cf4c8dd57757d90269d88ab22c31584f8c502a02cc50c70","typeString":"literal_string \"MerkleTrie: received a node with an unknown prefix\""},"value":"MerkleTrie: received a node with an unknown prefix"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17ad93750016927b4cf4c8dd57757d90269d88ab22c31584f8c502a02cc50c70","typeString":"literal_string \"MerkleTrie: received a node with an unknown prefix\""}],"id":58476,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8888:6:78","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":58478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8888:60:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58479,"nodeType":"ExpressionStatement","src":"8888:60:78"}]},"id":58481,"nodeType":"IfStatement","src":"8372:595:78","trueBody":{"id":58475,"nodeType":"Block","src":"8443:417:78","statements":[{"expression":{"id":58469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58462,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"8732:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":58464,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"8759:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8771:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"8759:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58467,"indexExpression":{"hexValue":"31","id":58466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8779:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8759:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"id":58463,"name":"_getNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58579,"src":"8748:10:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8748:34:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8732:50:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58470,"nodeType":"ExpressionStatement","src":"8732:50:78"},{"expression":{"id":58473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58471,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"8804:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":58472,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58395,"src":"8823:18:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8804:37:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58474,"nodeType":"ExpressionStatement","src":"8804:37:78"}]}},"id":58482,"nodeType":"IfStatement","src":"6798:2169:78","trueBody":{"id":58454,"nodeType":"Block","src":"6859:1507:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58417,"name":"keyRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58387,"src":"7475:12:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7488:6:78","memberName":"length","nodeType":"MemberAccess","src":"7475:19:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":58419,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58395,"src":"7498:18:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7475:41:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b65792072656d61696e646572206d757374206265206964656e746963616c20746f20706174682072656d61696e646572","id":58421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7542:63:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_67315a0e77a5536b39d0c39f888d5fdda6e387450ff0a5b97b04ce6f37156da2","typeString":"literal_string \"MerkleTrie: key remainder must be identical to path remainder\""},"value":"MerkleTrie: key remainder must be identical to path remainder"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67315a0e77a5536b39d0c39f888d5fdda6e387450ff0a5b97b04ce6f37156da2","typeString":"literal_string \"MerkleTrie: key remainder must be identical to path remainder\""}],"id":58416,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7442:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7442:185:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58423,"nodeType":"ExpressionStatement","src":"7442:185:78"},{"expression":{"id":58432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58424,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"7976:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":58427,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"8005:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8017:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"8005:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58430,"indexExpression":{"hexValue":"31","id":58429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8025:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8005:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":58425,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"7985:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7995:9:78","memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":57279,"src":"7985:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7985:43:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7976:52:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58433,"nodeType":"ExpressionStatement","src":"7976:52:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58435,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"8058:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8065:6:78","memberName":"length","nodeType":"MemberAccess","src":"8058:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":58437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8074:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8058:17:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206c656e677468206d7573742062652067726561746572207468616e207a65726f20286c65616629","id":58439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8077:59:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_5071dda95a1eccba38d20abf92e4593bf594fe0eaab818c9628ffbdd69190c3a","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (leaf)\""},"value":"MerkleTrie: value length must be greater than zero (leaf)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5071dda95a1eccba38d20abf92e4593bf594fe0eaab818c9628ffbdd69190c3a","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (leaf)\""}],"id":58434,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8050:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:87:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58441,"nodeType":"ExpressionStatement","src":"8050:87:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58443,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"8229:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58444,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58175,"src":"8234:5:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8240:6:78","memberName":"length","nodeType":"MemberAccess","src":"8234:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":58446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8249:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8234:16:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8229:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c617374206e6f646520696e2070726f6f6620286c65616629","id":58449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8252:58:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_56830735fd39b228c902ab2ed7133b442a549106a2e2a841e399162f79a7b994","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (leaf)\""},"value":"MerkleTrie: value node must be last node in proof (leaf)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56830735fd39b228c902ab2ed7133b442a549106a2e2a841e399162f79a7b994","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (leaf)\""}],"id":58442,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8221:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8221:90:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58451,"nodeType":"ExpressionStatement","src":"8221:90:78"},{"expression":{"id":58452,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"8341:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":58162,"id":58453,"nodeType":"Return","src":"8334:13:78"}]}}]}},"id":58490,"nodeType":"IfStatement","src":"4443:4627:78","trueBody":{"id":58348,"nodeType":"Block","src":"4497:1378:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58282,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"4519:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":58283,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58181,"src":"4538:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4542:6:78","memberName":"length","nodeType":"MemberAccess","src":"4538:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4519:29:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":58346,"nodeType":"Block","src":"5447:414:78","statements":[{"assignments":[58318],"declarations":[{"constant":false,"id":58318,"mutability":"mutable","name":"branchKey","nameLocation":"5615:9:78","nodeType":"VariableDeclaration","scope":58346,"src":"5609:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":58317,"name":"uint8","nodeType":"ElementaryTypeName","src":"5609:5:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":58325,"initialValue":{"arguments":[{"baseExpression":{"id":58321,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58181,"src":"5633:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58323,"indexExpression":{"id":58322,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"5637:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5633:20:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":58320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5627:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":58319,"name":"uint8","nodeType":"ElementaryTypeName","src":"5627:5:78","typeDescriptions":{}}},"id":58324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5627:27:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5609:45:78"},{"assignments":[58330],"declarations":[{"constant":false,"id":58330,"mutability":"mutable","name":"nextNode","nameLocation":"5701:8:78","nodeType":"VariableDeclaration","scope":58346,"src":"5676:33:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem"},"typeName":{"id":58329,"nodeType":"UserDefinedTypeName","pathNode":{"id":58328,"name":"RLPReader.RLPItem","nameLocations":["5676:9:78","5686:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":57059,"src":"5676:17:78"},"referencedDeclaration":57059,"src":"5676:17:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"visibility":"internal"}],"id":58335,"initialValue":{"baseExpression":{"expression":{"id":58331,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"5712:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5724:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"5712:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58334,"indexExpression":{"id":58333,"name":"branchKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58318,"src":"5732:9:78","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5712:30:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}},"nodeType":"VariableDeclarationStatement","src":"5676:66:78"},{"expression":{"id":58340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58336,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58188,"src":"5764:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":58338,"name":"nextNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58330,"src":"5791:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"id":58337,"name":"_getNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58579,"src":"5780:10:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5780:20:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5764:36:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58341,"nodeType":"ExpressionStatement","src":"5764:36:78"},{"expression":{"id":58344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58342,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58195,"src":"5822:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":58343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5841:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5822:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58345,"nodeType":"ExpressionStatement","src":"5822:20:78"}]},"id":58347,"nodeType":"IfStatement","src":"4515:1346:78","trueBody":{"id":58316,"nodeType":"Block","src":"4550:891:78","statements":[{"expression":{"id":58294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58286,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"5038:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":58289,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58211,"src":"5067:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5079:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"5067:19:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58292,"indexExpression":{"id":58291,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58096,"src":"5087:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5067:31:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":58287,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"5047:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5057:9:78","memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":57279,"src":"5047:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5047:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5038:61:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58295,"nodeType":"ExpressionStatement","src":"5038:61:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58297,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"5129:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5136:6:78","memberName":"length","nodeType":"MemberAccess","src":"5129:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":58299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5145:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5129:17:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206c656e677468206d7573742062652067726561746572207468616e207a65726f20286272616e636829","id":58301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5148:61:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_8775b11e5be9767bdebc551fa79ad29ea4537352f4a48485de1a8db83bbe60c4","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (branch)\""},"value":"MerkleTrie: value length must be greater than zero (branch)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8775b11e5be9767bdebc551fa79ad29ea4537352f4a48485de1a8db83bbe60c4","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (branch)\""}],"id":58296,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5121:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:89:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58303,"nodeType":"ExpressionStatement","src":"5121:89:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"5302:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58306,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58175,"src":"5307:5:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5313:6:78","memberName":"length","nodeType":"MemberAccess","src":"5307:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":58308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5322:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5307:16:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5302:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c617374206e6f646520696e2070726f6f6620286272616e636829","id":58311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5325:60:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_28518a26784b4bfc3bd75a215bb0df5bf2cba18845fca6d5d9ed89fab561e0ed","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (branch)\""},"value":"MerkleTrie: value node must be last node in proof (branch)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28518a26784b4bfc3bd75a215bb0df5bf2cba18845fca6d5d9ed89fab561e0ed","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (branch)\""}],"id":58304,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5294:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5294:92:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58313,"nodeType":"ExpressionStatement","src":"5294:92:78"},{"expression":{"id":58314,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58161,"src":"5416:6:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":58162,"id":58315,"nodeType":"Return","src":"5409:13:78"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58202,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"3310:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":58203,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58175,"src":"3314:5:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3320:6:78","memberName":"length","nodeType":"MemberAccess","src":"3314:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3310:16:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58492,"initializationExpression":{"assignments":[58199],"declarations":[{"constant":false,"id":58199,"mutability":"mutable","name":"i","nameLocation":"3303:1:78","nodeType":"VariableDeclaration","scope":58492,"src":"3295:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58198,"name":"uint256","nodeType":"ElementaryTypeName","src":"3295:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58201,"initialValue":{"hexValue":"30","id":58200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3307:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3295:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":58207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3328:3:78","subExpression":{"id":58206,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58199,"src":"3328:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58208,"nodeType":"ExpressionStatement","src":"3328:3:78"},"nodeType":"ForStatement","src":"3290:5790:78"},{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656d656e7473","id":58494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9097:39:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e37143e66f54939727845d07716cdc57b7efc6dc9f278b14a48ffe711866076","typeString":"literal_string \"MerkleTrie: ran out of proof elements\""},"value":"MerkleTrie: ran out of proof elements"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3e37143e66f54939727845d07716cdc57b7efc6dc9f278b14a48ffe711866076","typeString":"literal_string \"MerkleTrie: ran out of proof elements\""}],"id":58493,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9090:6:78","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":58495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9090:47:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58496,"nodeType":"ExpressionStatement","src":"9090:47:78"}]},"documentation":{"id":58151,"nodeType":"StructuredDocumentation","src":"2540:285:78","text":"@notice Retrieves the value associated with a given key.\n @param _key   Key to search for, as hex bytes.\n @param _proof Merkle trie inclusion proof for the key.\n @param _root  Known root of the Merkle trie.\n @return value_ Value of the key if it exists."},"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"2839:3:78","parameters":{"id":58159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58153,"mutability":"mutable","name":"_key","nameLocation":"2856:4:78","nodeType":"VariableDeclaration","scope":58498,"src":"2843:17:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58152,"name":"bytes","nodeType":"ElementaryTypeName","src":"2843:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58156,"mutability":"mutable","name":"_proof","nameLocation":"2877:6:78","nodeType":"VariableDeclaration","scope":58498,"src":"2862:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":58154,"name":"bytes","nodeType":"ElementaryTypeName","src":"2862:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":58155,"nodeType":"ArrayTypeName","src":"2862:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":58158,"mutability":"mutable","name":"_root","nameLocation":"2893:5:78","nodeType":"VariableDeclaration","scope":58498,"src":"2885:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":58157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2885:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2842:57:78"},"returnParameters":{"id":58162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58161,"mutability":"mutable","name":"value_","nameLocation":"2936:6:78","nodeType":"VariableDeclaration","scope":58498,"src":"2923:19:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58160,"name":"bytes","nodeType":"ElementaryTypeName","src":"2923:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2922:21:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":58553,"nodeType":"FunctionDefinition","src":"9434:390:78","nodes":[],"body":{"id":58552,"nodeType":"Block","src":"9526:298:78","nodes":[],"statements":[{"assignments":[58510],"declarations":[{"constant":false,"id":58510,"mutability":"mutable","name":"length","nameLocation":"9544:6:78","nodeType":"VariableDeclaration","scope":58552,"src":"9536:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9536:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58513,"initialValue":{"expression":{"id":58511,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58502,"src":"9553:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":58512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9560:6:78","memberName":"length","nodeType":"MemberAccess","src":"9553:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9536:30:78"},{"expression":{"id":58521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58514,"name":"proof_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58507,"src":"9576:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":58519,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"9600:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":58518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9585:14:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct MerkleTrie.TrieNode memory[] memory)"},"typeName":{"baseType":{"id":58516,"nodeType":"UserDefinedTypeName","pathNode":{"id":58515,"name":"TrieNode","nameLocations":["9589:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"9589:8:78"},"referencedDeclaration":58092,"src":"9589:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":58517,"nodeType":"ArrayTypeName","src":"9589:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}}},"id":58520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9585:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"src":"9576:31:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58522,"nodeType":"ExpressionStatement","src":"9576:31:78"},{"body":{"id":58550,"nodeType":"Block","src":"9650:168:78","statements":[{"expression":{"id":58544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":58530,"name":"proof_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58507,"src":"9664:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":58532,"indexExpression":{"id":58531,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"9671:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9664:9:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":58534,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58502,"src":"9696:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":58536,"indexExpression":{"id":58535,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"9703:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9696:9:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"baseExpression":{"id":58539,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58502,"src":"9735:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":58541,"indexExpression":{"id":58540,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"9742:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9735:9:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58537,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"9716:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9726:8:78","memberName":"readList","nodeType":"MemberAccess","referencedDeclaration":57231,"src":"9716:18:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory) pure returns (struct RLPReader.RLPItem memory[] memory)"}},"id":58542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9716:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}],"id":58533,"name":"TrieNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58092,"src":"9676:8:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TrieNode_$58092_storage_ptr_$","typeString":"type(struct MerkleTrie.TrieNode storage pointer)"}},"id":58543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9687:7:78","9707:7:78"],"names":["encoded","decoded"],"nodeType":"FunctionCall","src":"9676:72:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"src":"9664:84:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58545,"nodeType":"ExpressionStatement","src":"9664:84:78"},{"id":58549,"nodeType":"UncheckedBlock","src":"9762:46:78","statements":[{"expression":{"id":58547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9790:3:78","subExpression":{"id":58546,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"9792:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58548,"nodeType":"ExpressionStatement","src":"9790:3:78"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"9637:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":58528,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"9641:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9637:10:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58551,"initializationExpression":{"assignments":[58524],"declarations":[{"constant":false,"id":58524,"mutability":"mutable","name":"i","nameLocation":"9630:1:78","nodeType":"VariableDeclaration","scope":58551,"src":"9622:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58523,"name":"uint256","nodeType":"ElementaryTypeName","src":"9622:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58526,"initialValue":{"hexValue":"30","id":58525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9634:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9622:13:78"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"9617:201:78"}]},"documentation":{"id":58499,"nodeType":"StructuredDocumentation","src":"9150:279:78","text":"@notice Parses an array of proof elements into a new array that contains both the original\n         encoded element and the RLP-decoded element.\n @param _proof Array of proof elements to parse.\n @return proof_ Proof parsed into easily accessible structs."},"implemented":true,"kind":"function","modifiers":[],"name":"_parseProof","nameLocation":"9443:11:78","parameters":{"id":58503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58502,"mutability":"mutable","name":"_proof","nameLocation":"9470:6:78","nodeType":"VariableDeclaration","scope":58553,"src":"9455:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":58500,"name":"bytes","nodeType":"ElementaryTypeName","src":"9455:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":58501,"nodeType":"ArrayTypeName","src":"9455:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9454:23:78"},"returnParameters":{"id":58508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58507,"mutability":"mutable","name":"proof_","nameLocation":"9518:6:78","nodeType":"VariableDeclaration","scope":58553,"src":"9500:24:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":58505,"nodeType":"UserDefinedTypeName","pathNode":{"id":58504,"name":"TrieNode","nameLocations":["9500:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"9500:8:78"},"referencedDeclaration":58092,"src":"9500:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":58506,"nodeType":"ArrayTypeName","src":"9500:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$58092_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"src":"9499:26:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":58579,"nodeType":"FunctionDefinition","src":"10121:193:78","nodes":[],"body":{"id":58578,"nodeType":"Block","src":"10213:101:78","nodes":[],"statements":[{"expression":{"id":58576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58562,"name":"id_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58560,"src":"10223:3:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58563,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58557,"src":"10229:5:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}},"id":58564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10235:6:78","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":57055,"src":"10229:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":58565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10244:2:78","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10229:17:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":58573,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58557,"src":"10301:5:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":58571,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"10281:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10291:9:78","memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":57279,"src":"10281:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10281:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10229:78:78","trueExpression":{"arguments":[{"id":58569,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58557,"src":"10272:5:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":58567,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"10249:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10259:12:78","memberName":"readRawBytes","nodeType":"MemberAccess","referencedDeclaration":57316,"src":"10249:22:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10249:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10223:84:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58577,"nodeType":"ExpressionStatement","src":"10223:84:78"}]},"documentation":{"id":58554,"nodeType":"StructuredDocumentation","src":"9830:286:78","text":"@notice Picks out the ID for a node. Node ID is referred to as the \"hash\" within the\n         specification, but nodes < 32 bytes are not actually hashed.\n @param _node Node to pull an ID for.\n @return id_ ID for the node, depending on the size of its contents."},"implemented":true,"kind":"function","modifiers":[],"name":"_getNodeID","nameLocation":"10130:10:78","parameters":{"id":58558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58557,"mutability":"mutable","name":"_node","nameLocation":"10166:5:78","nodeType":"VariableDeclaration","scope":58579,"src":"10141:30:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem"},"typeName":{"id":58556,"nodeType":"UserDefinedTypeName","pathNode":{"id":58555,"name":"RLPReader.RLPItem","nameLocations":["10141:9:78","10151:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":57059,"src":"10141:17:78"},"referencedDeclaration":57059,"src":"10141:17:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"visibility":"internal"}],"src":"10140:32:78"},"returnParameters":{"id":58561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58560,"mutability":"mutable","name":"id_","nameLocation":"10208:3:78","nodeType":"VariableDeclaration","scope":58579,"src":"10195:16:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58559,"name":"bytes","nodeType":"ElementaryTypeName","src":"10195:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10194:18:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":58602,"nodeType":"FunctionDefinition","src":"10495:172:78","nodes":[],"body":{"id":58601,"nodeType":"Block","src":"10585:82:78","nodes":[],"statements":[{"expression":{"id":58599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58588,"name":"nibbles_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58586,"src":"10595:8:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"expression":{"id":58593,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58583,"src":"10642:5:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":58594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10648:7:78","memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":58091,"src":"10642:13:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$57059_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":58596,"indexExpression":{"hexValue":"30","id":58595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10656:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10642:16:78","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$57059_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":58591,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57578,"src":"10622:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$57578_$","typeString":"type(library RLPReader)"}},"id":58592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10632:9:78","memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":57279,"src":"10622:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$57059_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":58597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10622:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":58589,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55153,"src":"10606:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$55153_$","typeString":"type(library Bytes)"}},"id":58590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10612:9:78","memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":55133,"src":"10606:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":58598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10606:54:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10595:65:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58600,"nodeType":"ExpressionStatement","src":"10595:65:78"}]},"documentation":{"id":58580,"nodeType":"StructuredDocumentation","src":"10320:170:78","text":"@notice Gets the path for a leaf or extension node.\n @param _node Node to get a path for.\n @return nibbles_ Node path, converted to an array of nibbles."},"implemented":true,"kind":"function","modifiers":[],"name":"_getNodePath","nameLocation":"10504:12:78","parameters":{"id":58584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58583,"mutability":"mutable","name":"_node","nameLocation":"10533:5:78","nodeType":"VariableDeclaration","scope":58602,"src":"10517:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":58582,"nodeType":"UserDefinedTypeName","pathNode":{"id":58581,"name":"TrieNode","nameLocations":["10517:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":58092,"src":"10517:8:78"},"referencedDeclaration":58092,"src":"10517:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$58092_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"src":"10516:23:78"},"returnParameters":{"id":58587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58586,"mutability":"mutable","name":"nibbles_","nameLocation":"10575:8:78","nodeType":"VariableDeclaration","scope":58602,"src":"10562:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58585,"name":"bytes","nodeType":"ElementaryTypeName","src":"10562:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10561:23:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":58644,"nodeType":"FunctionDefinition","src":"10892:321:78","nodes":[],"body":{"id":58643,"nodeType":"Block","src":"10997:216:78","nodes":[],"statements":[{"assignments":[58613],"declarations":[{"constant":false,"id":58613,"mutability":"mutable","name":"max","nameLocation":"11015:3:78","nodeType":"VariableDeclaration","scope":58643,"src":"11007:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58612,"name":"uint256","nodeType":"ElementaryTypeName","src":"11007:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58625,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58614,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58605,"src":"11022:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11025:6:78","memberName":"length","nodeType":"MemberAccess","src":"11022:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":58616,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58607,"src":"11034:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11037:6:78","memberName":"length","nodeType":"MemberAccess","src":"11034:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11022:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":58619,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11021:23:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":58622,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58607,"src":"11059:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11062:6:78","memberName":"length","nodeType":"MemberAccess","src":"11059:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11021:47:78","trueExpression":{"expression":{"id":58620,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58605,"src":"11047:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11050:6:78","memberName":"length","nodeType":"MemberAccess","src":"11047:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11007:61:78"},{"body":{"id":58641,"nodeType":"Block","src":"11131:76:78","statements":[{"id":58640,"nodeType":"UncheckedBlock","src":"11145:52:78","statements":[{"expression":{"id":58638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11173:9:78","subExpression":{"id":58637,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58610,"src":"11175:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58639,"nodeType":"ExpressionStatement","src":"11173:9:78"}]}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":58636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58626,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58610,"src":"11085:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":58627,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58613,"src":"11095:3:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11085:13:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":58635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":58629,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58605,"src":"11102:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58631,"indexExpression":{"id":58630,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58610,"src":"11105:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11102:11:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":58632,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58607,"src":"11117:2:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":58634,"indexExpression":{"id":58633,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58610,"src":"11120:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11117:11:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"11102:26:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11085:43:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58642,"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"11078:129:78"}]},"documentation":{"id":58603,"nodeType":"StructuredDocumentation","src":"10673:214:78","text":"@notice Utility; determines the number of nibbles shared between two nibble arrays.\n @param _a First nibble array.\n @param _b Second nibble array.\n @return shared_ Number of shared nibbles."},"implemented":true,"kind":"function","modifiers":[],"name":"_getSharedNibbleLength","nameLocation":"10901:22:78","parameters":{"id":58608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58605,"mutability":"mutable","name":"_a","nameLocation":"10937:2:78","nodeType":"VariableDeclaration","scope":58644,"src":"10924:15:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58604,"name":"bytes","nodeType":"ElementaryTypeName","src":"10924:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":58607,"mutability":"mutable","name":"_b","nameLocation":"10954:2:78","nodeType":"VariableDeclaration","scope":58644,"src":"10941:15:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":58606,"name":"bytes","nodeType":"ElementaryTypeName","src":"10941:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10923:34:78"},"returnParameters":{"id":58611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58610,"mutability":"mutable","name":"shared_","nameLocation":"10988:7:78","nodeType":"VariableDeclaration","scope":58644,"src":"10980:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58609,"name":"uint256","nodeType":"ElementaryTypeName","src":"10980:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10979:17:78"},"scope":58645,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"MerkleTrie","contractDependencies":[],"contractKind":"library","documentation":{"id":58084,"nodeType":"StructuredDocumentation","src":"146:277:78","text":"@title MerkleTrie\n @notice MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie\n         inclusion proofs. By default, this library assumes a hexary trie. One can change the\n         trie radix constant to support other trie radixes."},"fullyImplemented":true,"linearizedBaseContracts":[58645],"name":"MerkleTrie","nameLocation":"431:10:78","scope":58646,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":78}