{
  "contractName": "MockERC721CreatorExtensionUniqueURI",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "internalType": "uint80",
          "name": "startIndex",
          "type": "uint80"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "testMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "count",
          "type": "uint16"
        }
      ],
      "name": "testMintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint80\",\"name\":\"startIndex\",\"type\":\"uint80\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"count\",\"type\":\"uint16\"}],\"name\":\"testMintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenURI(address,uint256)\":{\"notice\":\"Get the uri for a given creator/tokenId\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mocks/MockERC721CreatorExtensionUniqueURI.sol\":\"MockERC721CreatorExtensionUniqueURI\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"project:/contracts/core/ICreatorCore.sol\":{\"keccak256\":\"0x6bdcb757953594d3a259f1d68ec3d208ca42dba02115f08a6e32e2936ccb0349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd1853dabcd57eb9b735b3991cf59259cd28cdeca1353495b5c59dc0db2d85df\",\"dweb:/ipfs/QmfJLFZ7RoMvdR7kJLR7QmqreS1x5VNJSa7xvjVsC4mXte\"]},\"project:/contracts/core/IERC721CreatorCore.sol\":{\"keccak256\":\"0xb168262afd1960a48d9c2088b7c24df3c0e5e190d2e2451e8af38983cf713bad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b8e621daf8a34967aa796482e02521390328f84a130f064e67aafc1b11748e5\",\"dweb:/ipfs/QmRC4suf2UXxkfy9NazSHwVAHLFeuzqAuQPmZrf1KQfX7f\"]},\"project:/contracts/extensions/ICreatorExtensionTokenURI.sol\":{\"keccak256\":\"0x6c8ca804ee7dea9d78f0dacdd9233b1b75ca2b2fa517f52f0fdf6beb34780a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a04a6f0cce2bbdb022a8125e147519c7fbaa89692c8f0cfee69a67a2956316f\",\"dweb:/ipfs/QmdUxwBEnFshm1j5FEcJctC7DbFWUznis2LaPcKR7FEZX7\"]},\"project:/contracts/mocks/MockERC721CreatorExtensionUniqueURI.sol\":{\"keccak256\":\"0xe079d48259d4a7d2ee7298937187614411f9c8f48963f56c5a5b53c09b109492\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7c7915ef0963dfa5e08e23b852b35748b7949b96d5d89a0d977b4e742d49b2\",\"dweb:/ipfs/QmWHVRhpZ3wwxs2Zb5RfMHPgNs7VFfx4KBvzgZ6DDMSe7p\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051610c4f380380610c4f83398101604081905261002f91610067565b600180546001600160501b03909216600160a01b026001600160f01b03199092166001600160a01b03909316929092171790556100b9565b6000806040838503121561007a57600080fd5b82516001600160a01b038116811461009157600080fd5b60208401519092506001600160501b03811681146100ae57600080fd5b809150509250929050565b610b87806100c86000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c578063580cf31b14610084578063c70c875a14610099578063e0df5b6f146100ac578063e9dc6375146100bf575b600080fd5b61006f61006a3660046105d5565b6100df565b60405190151581526020015b60405180910390f35b610097610092366004610622565b610116565b005b6100976100a7366004610660565b61029f565b6100976100ba36600461067b565b610362565b6100d26100cd3660046106ec565b610374565b60405161007b919061073a565b60006001600160e01b0319821663e9dc637560e01b148061011057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008161ffff166001600160401b038111156101345761013461076d565b60405190808252806020026020018201604052801561015d578160200160208202803683370190505b50905060005b8261ffff168110156101d45760018054829161018f91600160a01b90046001600160501b031690610799565b6001600160501b03166101a291906107c0565b8282815181106101b4576101b46107d3565b6001600160501b0390921660209283029190910190910152600101610163565b508161ffff16600160148282829054906101000a90046001600160501b03166101fd9190610799565b82546001600160501b039182166101009390930a92830291909202199091161790555060015460405163213c198760e11b81526001600160a01b0390911690634278330e9061025290869085906004016107e9565b6000604051808303816000875af1158015610271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102999190810190610848565b50505050565b60018054600160a01b90046001600160501b03169060146102bf83610905565b82546101009290920a6001600160501b0381810219909316918316021790915560015460405163d397371960e01b81526001600160a01b038581166004830152600160a01b830490931660248201529116915063d3973719906044016020604051808303816000875af115801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e9190610933565b5050565b600061036f8284836109d4565b505050565b6001546060906001600160a01b038481169116146103c25760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b604482015260640160405180910390fd5b60405163b4b5b48f60e01b8152600481018390526000906001600160a01b0385169063b4b5b48f90602401602060405180830381865afa15801561040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042e9190610a94565b90506000610444826001600160501b031661046d565b604051602001610455929190610abd565b60405160208183030381529060405291505092915050565b6060600061047a836104ff565b60010190506000816001600160401b038111156104995761049961076d565b6040519080825280601f01601f1916602001820160405280156104c3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846104cd57509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061053e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310610568576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061058657662386f26fc10000830492506010015b6305f5e100831061059e576305f5e100830492506008015b61271083106105b257612710830492506004015b606483106105c4576064830492506002015b600a83106101105760010192915050565b6000602082840312156105e757600080fd5b81356001600160e01b0319811681146105ff57600080fd5b9392505050565b80356001600160a01b038116811461061d57600080fd5b919050565b6000806040838503121561063557600080fd5b61063e83610606565b9150602083013561ffff8116811461065557600080fd5b809150509250929050565b60006020828403121561067257600080fd5b6105ff82610606565b6000806020838503121561068e57600080fd5b82356001600160401b03808211156106a557600080fd5b818501915085601f8301126106b957600080fd5b8135818111156106c857600080fd5b8660208285010111156106da57600080fd5b60209290920196919550909350505050565b600080604083850312156106ff57600080fd5b61070883610606565b946020939093013593505050565b60005b83811015610731578181015183820152602001610719565b50506000910152565b6020815260008251806020840152610759816040850160208701610716565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160501b038181168382160190808211156107b9576107b9610783565b5092915050565b8082018082111561011057610110610783565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561083b5784516001600160501b031683529383019391830191600101610816565b5090979650505050505050565b6000602080838503121561085b57600080fd5b82516001600160401b038082111561087257600080fd5b818501915085601f83011261088657600080fd5b8151818111156108985761089861076d565b8060051b604051601f19603f830116810181811085821117156108bd576108bd61076d565b6040529182528482019250838101850191888311156108db57600080fd5b938501935b828510156108f9578451845293850193928501926108e0565b98975050505050505050565b60006001600160501b038281166002600160501b0319810161092957610929610783565b6001019392505050565b60006020828403121561094557600080fd5b5051919050565b600181811c9082168061096057607f821691505b60208210810361098057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561036f57600081815260208120601f850160051c810160208610156109ad5750805b601f850160051c820191505b818110156109cc578281556001016109b9565b505050505050565b6001600160401b038311156109eb576109eb61076d565b6109ff836109f9835461094c565b83610986565b6000601f841160018114610a335760008515610a1b5750838201355b600019600387901b1c1916600186901b178355610a8d565b600083815260209020601f19861690835b82811015610a645786850135825560209485019460019092019101610a44565b5086821015610a815760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610aa657600080fd5b81516001600160501b03811681146105ff57600080fd5b6000808454610acb8161094c565b60018281168015610ae35760018114610af857610b27565b60ff1984168752821515830287019450610b27565b8860005260208060002060005b85811015610b1e5781548a820152908401908201610b05565b50505082870194505b50602f60f81b845286519250610b438382860160208a01610716565b91909201019594505050505056fea2646970667358221220cd356488c25edb65137920142252e0e4b28d9e3496314df9ed2ca9c4e21349af64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c578063580cf31b14610084578063c70c875a14610099578063e0df5b6f146100ac578063e9dc6375146100bf575b600080fd5b61006f61006a3660046105d5565b6100df565b60405190151581526020015b60405180910390f35b610097610092366004610622565b610116565b005b6100976100a7366004610660565b61029f565b6100976100ba36600461067b565b610362565b6100d26100cd3660046106ec565b610374565b60405161007b919061073a565b60006001600160e01b0319821663e9dc637560e01b148061011057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008161ffff166001600160401b038111156101345761013461076d565b60405190808252806020026020018201604052801561015d578160200160208202803683370190505b50905060005b8261ffff168110156101d45760018054829161018f91600160a01b90046001600160501b031690610799565b6001600160501b03166101a291906107c0565b8282815181106101b4576101b46107d3565b6001600160501b0390921660209283029190910190910152600101610163565b508161ffff16600160148282829054906101000a90046001600160501b03166101fd9190610799565b82546001600160501b039182166101009390930a92830291909202199091161790555060015460405163213c198760e11b81526001600160a01b0390911690634278330e9061025290869085906004016107e9565b6000604051808303816000875af1158015610271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102999190810190610848565b50505050565b60018054600160a01b90046001600160501b03169060146102bf83610905565b82546101009290920a6001600160501b0381810219909316918316021790915560015460405163d397371960e01b81526001600160a01b038581166004830152600160a01b830490931660248201529116915063d3973719906044016020604051808303816000875af115801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e9190610933565b5050565b600061036f8284836109d4565b505050565b6001546060906001600160a01b038481169116146103c25760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b604482015260640160405180910390fd5b60405163b4b5b48f60e01b8152600481018390526000906001600160a01b0385169063b4b5b48f90602401602060405180830381865afa15801561040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042e9190610a94565b90506000610444826001600160501b031661046d565b604051602001610455929190610abd565b60405160208183030381529060405291505092915050565b6060600061047a836104ff565b60010190506000816001600160401b038111156104995761049961076d565b6040519080825280601f01601f1916602001820160405280156104c3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846104cd57509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061053e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310610568576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061058657662386f26fc10000830492506010015b6305f5e100831061059e576305f5e100830492506008015b61271083106105b257612710830492506004015b606483106105c4576064830492506002015b600a83106101105760010192915050565b6000602082840312156105e757600080fd5b81356001600160e01b0319811681146105ff57600080fd5b9392505050565b80356001600160a01b038116811461061d57600080fd5b919050565b6000806040838503121561063557600080fd5b61063e83610606565b9150602083013561ffff8116811461065557600080fd5b809150509250929050565b60006020828403121561067257600080fd5b6105ff82610606565b6000806020838503121561068e57600080fd5b82356001600160401b03808211156106a557600080fd5b818501915085601f8301126106b957600080fd5b8135818111156106c857600080fd5b8660208285010111156106da57600080fd5b60209290920196919550909350505050565b600080604083850312156106ff57600080fd5b61070883610606565b946020939093013593505050565b60005b83811015610731578181015183820152602001610719565b50506000910152565b6020815260008251806020840152610759816040850160208701610716565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160501b038181168382160190808211156107b9576107b9610783565b5092915050565b8082018082111561011057610110610783565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561083b5784516001600160501b031683529383019391830191600101610816565b5090979650505050505050565b6000602080838503121561085b57600080fd5b82516001600160401b038082111561087257600080fd5b818501915085601f83011261088657600080fd5b8151818111156108985761089861076d565b8060051b604051601f19603f830116810181811085821117156108bd576108bd61076d565b6040529182528482019250838101850191888311156108db57600080fd5b938501935b828510156108f9578451845293850193928501926108e0565b98975050505050505050565b60006001600160501b038281166002600160501b0319810161092957610929610783565b6001019392505050565b60006020828403121561094557600080fd5b5051919050565b600181811c9082168061096057607f821691505b60208210810361098057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561036f57600081815260208120601f850160051c810160208610156109ad5750805b601f850160051c820191505b818110156109cc578281556001016109b9565b505050505050565b6001600160401b038311156109eb576109eb61076d565b6109ff836109f9835461094c565b83610986565b6000601f841160018114610a335760008515610a1b5750838201355b600019600387901b1c1916600186901b178355610a8d565b600083815260209020601f19861690835b82811015610a645786850135825560209485019460019092019101610a44565b5086821015610a815760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610aa657600080fd5b81516001600160501b03811681146105ff57600080fd5b6000808454610acb8161094c565b60018281168015610ae35760018114610af857610b27565b60ff1984168752821515830287019450610b27565b8860005260208060002060005b85811015610b1e5781548a820152908401908201610b05565b50505082870194505b50602f60f81b845286519250610b438382860160208a01610716565b91909201019594505050505056fea2646970667358221220cd356488c25edb65137920142252e0e4b28d9e3496314df9ed2ca9c4e21349af64736f6c63430008130033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:479:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "111:366:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "157:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "166:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "169:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "159:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "159:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "159:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "132:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "141:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "128:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "128:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "153:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "124:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "124:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "121:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "182:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "201:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "195:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "195:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "186:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "274:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "283:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "286:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "276:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "276:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "276:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "233:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "244:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "259:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "264:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "255:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "255:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "268:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "251:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "251:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "240:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "240:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "230:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "230:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "223:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "223:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "220:70:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "299:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "309:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "299:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "323:40:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "348:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "359:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "344:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "344:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "338:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "338:25:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "327:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "429:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "438:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "441:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "431:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "431:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "431:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nodeType": "YulIdentifier",
                            "src": "385:7:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "398:7:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "415:2:81",
                                        "type": "",
                                        "value": "80"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "419:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "411:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "411:10:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "423:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "407:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "407:18:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "394:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "394:32:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "382:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "382:45:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "375:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "375:53:81"
                  },
                  "nodeType": "YulIf",
                  "src": "372:73:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "454:17:81",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "464:7:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "454:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint80_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "69:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "80:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "92:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "100:6:81",
                "type": ""
              }
            ],
            "src": "14:463:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_uint80_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, sub(shl(80, 1), 1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:10563:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "83:217:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "129:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "138:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "141:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "131:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "131:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "131:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "104:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "113:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "100:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "100:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "125:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "96:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "93:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "154:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "180:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "167:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "167:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "158:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "254:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "263:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "266:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "256:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "256:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "256:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "212:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "223:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "234:3:81",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "239:10:81",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "230:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "230:20:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "219:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "219:32:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "209:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "209:43:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "202:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "202:51:81"
                  },
                  "nodeType": "YulIf",
                  "src": "199:71:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "279:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "289:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "279:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "49:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "60:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "72:6:81",
                "type": ""
              }
            ],
            "src": "14:286:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "400:92:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "410:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "422:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "433:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "418:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "418:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "410:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "452:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "477:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "470:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "470:14:81"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "463:6:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "463:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "445:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "445:41:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "445:41:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "369:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "380:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "391:4:81",
                "type": ""
              }
            ],
            "src": "305:187:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "546:124:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "556:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "578:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "565:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "565:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "556:5:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "648:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "657:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "660:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "650:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "650:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "650:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "607:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "618:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "633:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "638:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "629:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "629:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "642:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "625:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "625:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "614:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "614:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "604:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "604:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "597:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "597:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "594:70:81"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "525:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "536:5:81",
                "type": ""
              }
            ],
            "src": "497:173:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "761:260:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "807:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "816:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "819:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "809:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "809:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "809:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "782:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "791:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "778:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "778:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "803:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "774:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "774:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "771:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "832:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "861:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "842:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "842:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "832:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "880:45:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "910:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "921:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "906:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "906:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "893:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "893:32:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "884:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "975:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "984:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "987:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "977:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "977:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "977:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "947:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "958:5:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "965:6:81",
                                "type": "",
                                "value": "0xffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "954:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "954:18:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "944:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "944:29:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "937:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "937:37:81"
                  },
                  "nodeType": "YulIf",
                  "src": "934:57:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1000:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1010:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1000:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "719:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "730:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "742:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "750:6:81",
                "type": ""
              }
            ],
            "src": "675:346:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1096:116:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1142:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1151:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1154:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1144:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1144:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1144:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1117:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1126:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1113:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1113:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1138:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1109:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1109:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1106:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1167:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1196:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "1177:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1177:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1167:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1062:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1073:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1085:6:81",
                "type": ""
              }
            ],
            "src": "1026:186:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1307:502:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1353:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1362:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1365:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1355:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1355:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1355:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1328:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1337:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1324:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1324:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1349:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1320:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1320:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1317:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1378:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1405:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1392:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1392:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1382:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1424:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1434:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1428:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1479:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1488:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1491:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1481:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1481:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1481:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1467:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1475:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1464:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1464:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1461:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1504:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1518:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1529:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1514:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1514:22:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "1508:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1584:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1593:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1596:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1586:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1586:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1586:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "1563:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1567:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1559:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1559:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1574:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1555:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1555:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1548:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1548:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1545:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1609:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1636:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1623:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1623:16:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "1613:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1666:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1675:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1678:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1668:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1668:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1668:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1654:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1662:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1651:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1651:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1648:34:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1732:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1741:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1744:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1734:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1734:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1734:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "1705:2:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1709:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1701:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1701:15:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1718:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1697:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1697:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1723:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1694:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1694:37:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1691:57:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1757:21:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1771:2:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1775:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1767:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1767:11:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1757:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1787:16:81",
                  "value": {
                    "name": "length",
                    "nodeType": "YulIdentifier",
                    "src": "1797:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1787:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1265:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1276:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1288:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1296:6:81",
                "type": ""
              }
            ],
            "src": "1217:592:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1901:167:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1947:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1956:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1959:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1949:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1949:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1949:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1922:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1931:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1918:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1918:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1943:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1914:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1914:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1911:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1972:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2001:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "1982:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1982:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1972:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2020:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2047:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2058:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2043:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2043:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2030:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2030:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2020:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1859:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1870:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1882:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1890:6:81",
                "type": ""
              }
            ],
            "src": "1814:254:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2139:184:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2149:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2158:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "2153:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2218:63:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2243:3:81"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "2248:1:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "2239:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2239:11:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "2262:3:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "2267:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2258:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2258:11:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "2252:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2252:18:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "2232:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2232:39:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2232:39:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "2179:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2182:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "2176:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2176:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "2190:19:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2192:15:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "2201:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2204:2:81",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2197:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2197:10:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2192:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "2172:3:81",
                    "statements": []
                  },
                  "src": "2168:113:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "2301:3:81"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2306:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2297:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2297:16:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2315:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2290:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2290:27:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2290:27:81"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "2117:3:81",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "2122:3:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2127:6:81",
                "type": ""
              }
            ],
            "src": "2073:250:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2449:275:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2466:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2477:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2459:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2459:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2459:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2489:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "2509:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2503:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2503:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2493:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2536:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2547:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2532:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2532:18:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2552:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2525:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2525:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2525:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "2607:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2615:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2603:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2603:15:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2624:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2635:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2620:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2620:18:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2640:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "2568:34:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2568:79:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2568:79:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2656:62:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2672:9:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2691:6:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2699:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2687:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2687:15:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2708:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "2704:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2704:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2683:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2683:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2668:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2668:45:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2715:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2664:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2664:54:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2656:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2418:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2429:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2440:4:81",
                "type": ""
              }
            ],
            "src": "2328:396:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2761:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2778:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2785:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2790:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2781:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2781:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2771:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2771:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2771:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2818:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2821:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2811:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2811:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2811:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2842:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2845:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2835:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2835:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2835:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "2729:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2893:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2910:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2917:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2922:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2913:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2913:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2903:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2903:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2903:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2950:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2953:4:81",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2943:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2943:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2943:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2974:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2977:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2967:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2967:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2967:15:81"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "2861:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3040:133:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3050:28:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3068:2:81",
                            "type": "",
                            "value": "80"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3072:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3064:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3064:10:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3076:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "3060:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3060:18:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3054:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3087:34:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "3102:1:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3105:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3098:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3098:10:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "3114:1:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3117:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3110:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3110:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3094:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3094:27:81"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "3087:3:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3145:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "3147:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3147:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3147:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "3136:3:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3141:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3133:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3133:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3130:37:81"
                }
              ]
            },
            "name": "checked_add_t_uint80",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "3023:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "3026:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "3032:3:81",
                "type": ""
              }
            ],
            "src": "2993:180:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3226:77:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3236:16:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "3247:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "3250:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3243:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3243:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "3236:3:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3275:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "3277:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3277:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3277:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "3267:1:81"
                      },
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "3270:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3264:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3264:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3261:36:81"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "3209:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "3212:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "3218:3:81",
                "type": ""
              }
            ],
            "src": "3178:125:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3340:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3357:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3364:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3369:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3360:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3360:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3350:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3350:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3350:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3397:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3400:4:81",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3390:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3390:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3390:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3421:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3424:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "3414:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3414:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3414:15:81"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "3308:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3617:575:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3627:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3645:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3656:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3641:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3641:18:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "3631:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3675:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3690:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3706:3:81",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3711:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "3702:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3702:11:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3715:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3698:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3698:19:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3686:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3686:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3668:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3668:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3668:51:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3728:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3738:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3732:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3760:9:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3771:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3756:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3756:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3776:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3749:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3749:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3749:30:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3788:17:81",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "3799:6:81"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "3792:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3814:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "3834:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3828:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3828:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "3818:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "3857:6:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3865:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3850:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3850:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3850:22:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3881:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3892:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3903:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3888:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3888:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "3881:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3915:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "3933:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3941:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3929:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3929:15:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "3919:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3953:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3962:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "3957:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4021:145:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "4042:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "4057:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "4051:5:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4051:13:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4074:2:81",
                                          "type": "",
                                          "value": "80"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4078:1:81",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "4070:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4070:10:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "4082:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "4066:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4066:18:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "4047:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4047:38:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4035:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4035:51:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4035:51:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4099:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "4110:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "4115:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4106:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4106:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4099:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4131:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "4145:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "4153:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4141:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4141:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "4131:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "3983:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3986:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "3980:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3980:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "3994:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3996:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "4005:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4008:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4001:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4001:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "3996:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "3976:3:81",
                    "statements": []
                  },
                  "src": "3972:194:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4175:11:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "4183:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4175:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_array$_t_uint80_$dyn_memory_ptr__to_t_address_t_array$_t_uint80_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3578:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3589:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3597:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3608:4:81",
                "type": ""
              }
            ],
            "src": "3440:752:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4303:999:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4313:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4323:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4317:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4370:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4379:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4382:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4372:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4372:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4372:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4345:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4354:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4341:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4341:23:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4366:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4337:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4337:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4334:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4395:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4415:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4409:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4409:16:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4399:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4434:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4444:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "4438:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4489:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4498:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4501:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4491:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4491:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4491:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4477:6:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4485:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4474:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4474:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4471:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4514:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4528:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4539:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4524:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4524:22:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "4518:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4594:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4603:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4606:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4596:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4596:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4596:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "4573:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4577:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4569:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4569:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4584:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4565:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4565:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4558:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4558:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4555:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4619:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "4635:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4629:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4629:9:81"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "4623:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4661:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "4663:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4663:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4663:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "4653:2:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4657:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4650:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4650:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4647:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4692:20:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4706:1:81",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "4709:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "4702:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4702:10:81"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "4696:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4721:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4741:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4735:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4735:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "4725:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4753:56:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "4775:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_5",
                                "nodeType": "YulIdentifier",
                                "src": "4791:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4795:2:81",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4787:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4787:11:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4804:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "4800:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4800:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4783:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4783:25:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4771:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4771:38:81"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "4757:10:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4868:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "4870:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4870:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4870:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "4827:10:81"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "4839:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "4824:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4824:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "4847:10:81"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "4859:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "4844:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4844:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "4821:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4821:46:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4818:72:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4906:2:81",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "4910:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4899:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4899:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4899:22:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4930:17:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "4941:6:81"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "4934:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "4963:6:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "4971:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4956:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4956:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4956:18:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4983:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "4994:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5002:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4990:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4990:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "4983:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5014:34:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "5036:2:81"
                          },
                          {
                            "name": "_5",
                            "nodeType": "YulIdentifier",
                            "src": "5040:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5032:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5032:11:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5045:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5028:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5028:20:81"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "5018:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5080:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5089:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5092:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5082:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5082:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5082:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5063:6:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5071:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5060:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5060:19:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5057:39:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5105:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "5120:2:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5124:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5116:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5116:11:81"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "5109:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5192:79:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "5213:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "5224:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "5218:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5218:10:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5206:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5206:23:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5206:23:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5242:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "5253:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5258:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5249:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5249:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "5242:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "5147:3:81"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5152:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5144:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5144:15:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5160:23:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5162:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "5173:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5178:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5169:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5169:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "5162:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5140:3:81",
                    "statements": []
                  },
                  "src": "5136:135:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5280:16:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "5290:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5280:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4269:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4280:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4292:6:81",
                "type": ""
              }
            ],
            "src": "4197:1105:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5353:163:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5363:28:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5381:2:81",
                            "type": "",
                            "value": "80"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5385:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "5377:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5377:10:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5389:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "5373:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5373:18:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5367:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5400:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5419:5:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5426:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "5415:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5415:14:81"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "5404:7:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5457:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "5459:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5459:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5459:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "5444:7:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5453:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "5441:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5441:15:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5438:41:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5488:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "5499:7:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5508:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5495:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5495:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "5488:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint80",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5335:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "5345:3:81",
                "type": ""
              }
            ],
            "src": "5307:209:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5648:170:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5658:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5670:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5681:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5666:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5666:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5658:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5700:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5715:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5731:3:81",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5736:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5727:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5727:11:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5740:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "5723:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5723:19:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5711:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5711:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5693:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5693:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5693:51:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5764:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5775:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5760:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5760:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5784:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5800:2:81",
                                    "type": "",
                                    "value": "80"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5804:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5796:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5796:10:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5808:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "5792:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5792:18:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5780:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5780:31:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5753:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5753:59:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5753:59:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint80__to_t_address_t_uint80__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5609:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5620:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5628:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5639:4:81",
                "type": ""
              }
            ],
            "src": "5521:297:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5904:103:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5950:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5959:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5962:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5952:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5952:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5952:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5925:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5934:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5921:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5921:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5946:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5917:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5917:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5914:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5975:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5991:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5985:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5985:16:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5975:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5870:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5881:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5893:6:81",
                "type": ""
              }
            ],
            "src": "5823:184:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6067:325:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6077:22:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6091:1:81",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "6094:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "6087:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6087:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "6077:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6108:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "6138:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6144:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "6134:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6134:12:81"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "6112:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6185:31:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6187:27:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "6201:6:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6209:4:81",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "6197:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6197:17:81"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "6187:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "6165:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6158:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6158:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6155:61:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6275:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6296:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6303:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6308:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6299:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6299:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6289:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6289:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6289:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6340:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6343:4:81",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6333:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6333:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6333:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6368:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6371:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6361:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6361:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6361:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "6231:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "6254:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6262:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "6251:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6251:14:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "6228:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6228:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6225:161:81"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "6047:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "6056:6:81",
                "type": ""
              }
            ],
            "src": "6012:380:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6453:65:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6470:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "6473:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6463:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6463:14:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6463:14:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6486:26:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6504:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6507:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "6494:9:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6494:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "6486:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "6436:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "6444:4:81",
                "type": ""
              }
            ],
            "src": "6397:121:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6604:464:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6637:425:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6651:11:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "6661:1:81",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "6655:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "6682:2:81"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "6686:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6675:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6675:17:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6675:17:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6705:31:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "6727:2:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6731:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "6717:9:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6717:19:81"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "6709:4:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6749:57:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "6772:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6782:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nodeType": "YulIdentifier",
                                      "src": "6789:10:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "6801:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "6785:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6785:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "6778:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6778:27:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6768:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6768:38:81"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "6753:11:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6843:23:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6845:19:81",
                              "value": {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "6860:4:81"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "6845:11:81"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "6825:10:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6837:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "6822:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6822:20:81"
                        },
                        "nodeType": "YulIf",
                        "src": "6819:47:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6879:41:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "6893:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6903:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "6910:3:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "6915:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "6906:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6906:12:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "6899:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6899:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6889:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6889:31:81"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nodeType": "YulTypedName",
                            "src": "6883:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6933:24:81",
                        "value": {
                          "name": "deleteStart",
                          "nodeType": "YulIdentifier",
                          "src": "6946:11:81"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "6937:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7031:21:81",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "7040:5:81"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7047:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7033:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7033:17:81"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7033:17:81"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "6981:5:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "6988:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "6978:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6978:13:81"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "6992:26:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6994:22:81",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "7007:5:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7014:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7003:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7003:13:81"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nodeType": "YulIdentifier",
                                  "src": "6994:5:81"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "6974:3:81",
                          "statements": []
                        },
                        "src": "6970:82:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "6620:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6625:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6617:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6617:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6614:448:81"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "6576:5:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "6583:3:81",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "6588:10:81",
                "type": ""
              }
            ],
            "src": "6523:545:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7158:81:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7168:65:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "7183:4:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7201:1:81",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "7204:3:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7197:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7197:11:81"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7214:1:81",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7210:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7210:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7193:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7193:24:81"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "7189:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7189:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7179:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7179:40:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7225:1:81",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "7228:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "7221:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7221:11:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "7176:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7176:57:81"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "7168:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "7135:4:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "7141:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "7149:4:81",
                "type": ""
              }
            ],
            "src": "7073:166:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7347:1103:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7388:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "7390:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7390:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7390:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "7363:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7368:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7360:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7360:27:81"
                  },
                  "nodeType": "YulIf",
                  "src": "7357:53:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "7463:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "7501:4:81"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "7495:5:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7495:11:81"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "7469:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7469:38:81"
                      },
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "7509:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "7419:43:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7419:94:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7419:94:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7522:18:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7539:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "7526:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "7583:609:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "7597:32:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "7616:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "7625:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "7621:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "7621:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "7612:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7612:17:81"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "7601:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "7642:49:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "7686:4:81"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "7656:29:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7656:35:81"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "7646:6:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "7704:18:81",
                            "value": {
                              "name": "srcOffset",
                              "nodeType": "YulIdentifier",
                              "src": "7713:9:81"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "7708:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "7792:172:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7817:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "7842:3:81"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "7847:9:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7838:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7838:19:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "7825:12:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7825:33:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "7810:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7810:49:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "7810:49:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7876:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7890:6:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7898:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7886:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7886:14:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7876:6:81"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7917:33:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7934:9:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7945:4:81",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7930:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7930:20:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "7917:9:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "7746:1:81"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "7749:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "7743:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7743:14:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "7758:21:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7760:17:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7769:1:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7772:4:81",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7765:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7765:12:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "7760:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "7739:3:81",
                              "statements": []
                            },
                            "src": "7735:229:81"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "8009:127:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8034:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8063:3:81"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8068:9:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8059:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8059:19:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nodeType": "YulIdentifier",
                                              "src": "8046:12:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8046:33:81"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "8097:1:81",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "8100:3:81"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "8093:3:81"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "8093:11:81"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8106:3:81",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8089:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "8089:21:81"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8116:1:81",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8112:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "8112:6:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8085:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8085:34:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "8081:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8081:39:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8042:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8042:79:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "8027:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8027:95:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "8027:95:81"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "7983:7:81"
                                },
                                {
                                  "name": "len",
                                  "nodeType": "YulIdentifier",
                                  "src": "7992:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "7980:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7980:16:81"
                            },
                            "nodeType": "YulIf",
                            "src": "7977:159:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "8156:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8170:1:81",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "len",
                                          "nodeType": "YulIdentifier",
                                          "src": "8173:3:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "8166:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8166:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "8179:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "8162:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "8162:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "8149:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8149:33:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "8149:33:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "7576:616:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7581:1:81",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "8209:235:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "8223:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8236:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "8227:5:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "8269:74:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8287:42:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "8313:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8318:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8309:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8309:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "8296:12:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8296:33:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "8287:5:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "len",
                              "nodeType": "YulIdentifier",
                              "src": "8253:3:81"
                            },
                            "nodeType": "YulIf",
                            "src": "8250:93:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "8363:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "8422:5:81"
                                    },
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "8429:3:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "8369:52:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "8369:64:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "8356:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8356:78:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "8356:78:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "8201:243:81",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "7559:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7564:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7556:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7556:11:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "7549:895:81"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "7327:4:81",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "7333:3:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "7338:3:81",
                "type": ""
              }
            ],
            "src": "7244:1206:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8629:156:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8646:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8657:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8639:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8639:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8639:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8680:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8691:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8676:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8676:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8696:1:81",
                        "type": "",
                        "value": "7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8669:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8669:29:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8669:29:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8718:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8729:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8714:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8714:18:81"
                      },
                      {
                        "hexValue": "496e76616c6964",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8734:9:81",
                        "type": "",
                        "value": "Invalid"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8707:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8707:37:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8707:37:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8753:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8765:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8776:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8761:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8761:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8753:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8606:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8620:4:81",
                "type": ""
              }
            ],
            "src": "8455:330:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8891:76:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8901:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8913:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8924:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8909:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8909:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8901:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8943:9:81"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "8954:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8936:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8936:25:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8936:25:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8860:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8871:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8882:4:81",
                "type": ""
              }
            ],
            "src": "8790:177:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9052:208:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9098:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9107:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9110:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9100:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9100:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9100:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9073:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9082:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9069:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9069:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9094:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9065:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9065:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9062:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9123:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9142:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9136:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9136:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "9127:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9214:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9223:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9226:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9216:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9216:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9216:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "9174:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9185:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9200:2:81",
                                        "type": "",
                                        "value": "80"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9204:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "9196:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9196:10:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9208:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "9192:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9192:18:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "9181:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9181:30:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "9171:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9171:41:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9164:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9164:49:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9161:69:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9239:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9249:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9239:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint80_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9018:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9029:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9041:6:81",
                "type": ""
              }
            ],
            "src": "8972:288:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9550:879:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9560:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9571:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "ret",
                      "nodeType": "YulTypedName",
                      "src": "9564:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9581:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9604:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nodeType": "YulIdentifier",
                      "src": "9598:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9598:13:81"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nodeType": "YulTypedName",
                      "src": "9585:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9620:50:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "9660:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "9634:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9634:36:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "9624:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9679:11:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9689:1:81",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9683:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "9740:126:81",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9761:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nodeType": "YulIdentifier",
                                      "src": "9770:9:81"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9785:3:81",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nodeType": "YulIdentifier",
                                        "src": "9781:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9781:8:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "9766:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "9766:24:81"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "9754:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9754:37:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "9754:37:81"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "9804:52:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9815:3:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "9824:6:81"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "9846:6:81"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "9839:6:81"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9839:14:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "9832:6:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9832:22:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mul",
                                    "nodeType": "YulIdentifier",
                                    "src": "9820:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "9820:35:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "9811:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9811:45:81"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "9804:3:81"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "9733:133:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9738:1:81",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "9882:349:81",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "9903:1:81",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9906:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "9896:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9896:17:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "9896:17:81"
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "9926:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9936:4:81",
                              "type": "",
                              "value": "0x20"
                            },
                            "variables": [
                              {
                                "name": "_2",
                                "nodeType": "YulTypedName",
                                "src": "9930:2:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "9953:31:81",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "9978:1:81",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9981:2:81"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nodeType": "YulIdentifier",
                                "src": "9968:9:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9968:16:81"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nodeType": "YulTypedName",
                                "src": "9957:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "9997:10:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10006:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "10001:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "10074:111:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "10103:3:81"
                                          },
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "10108:1:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10099:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10099:11:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulIdentifier",
                                            "src": "10118:7:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "10112:5:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10112:14:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "10092:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10092:35:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "10092:35:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "10144:27:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10159:7:81"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10168:2:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10155:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10155:16:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nodeType": "YulIdentifier",
                                      "src": "10144:7:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "10031:1:81"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10034:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "10028:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10028:13:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "10042:19:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "10044:15:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10053:1:81"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10056:2:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10049:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10049:10:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "10044:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "10024:3:81",
                              "statements": []
                            },
                            "src": "10020:165:81"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "10198:23:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10209:3:81"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10214:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10205:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10205:16:81"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "10198:3:81"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "9875:356:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9880:1:81",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "9710:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9721:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "9706:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9706:18:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "9699:532:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "10247:3:81"
                      },
                      {
                        "hexValue": "2f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10252:3:81",
                        "type": "",
                        "value": "/"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10240:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10240:16:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10240:16:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10265:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "10287:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10281:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10281:13:81"
                  },
                  "variables": [
                    {
                      "name": "length_1",
                      "nodeType": "YulTypedName",
                      "src": "10269:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "10342:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10350:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10338:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10338:17:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "10361:3:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "10366:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10357:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10357:12:81"
                      },
                      {
                        "name": "length_1",
                        "nodeType": "YulIdentifier",
                        "src": "10371:8:81"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "10303:34:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10303:77:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10303:77:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10389:34:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "10404:3:81"
                          },
                          {
                            "name": "length_1",
                            "nodeType": "YulIdentifier",
                            "src": "10409:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10400:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10400:18:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10420:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10396:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10396:27:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10389:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9518:3:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9523:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9531:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9542:3:81",
                "type": ""
              }
            ],
            "src": "9265:1164:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10466:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10483:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10490:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10495:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "10486:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10486:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10476:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10476:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10476:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10523:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10526:4:81",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10516:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10516:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10516:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10547:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10550:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "10540:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10540:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10540:15:81"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nodeType": "YulFunctionDefinition",
            "src": "10434:127:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint80(x, y) -> sum\n    {\n        let _1 := sub(shl(80, 1), 1)\n        sum := add(and(x, _1), and(y, _1))\n        if gt(sum, _1) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_array$_t_uint80_$dyn_memory_ptr__to_t_address_t_array$_t_uint80_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _1 := 32\n        mstore(add(headStart, _1), 64)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let srcPtr := add(value1, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(80, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value0 := memPtr\n    }\n    function increment_t_uint80(value) -> ret\n    {\n        let _1 := sub(shl(80, 1), 1)\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_address_t_uint80__to_t_address_t_uint80__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(80, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint80_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(80, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := extract_byte_array_length(slotValue)\n        let _1 := 1\n        switch and(slotValue, _1)\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, mul(length, iszero(iszero(length))))\n        }\n        case 1 {\n            mstore(0, value0)\n            let _2 := 0x20\n            let dataPos := keccak256(0, _2)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n        mstore(ret, \"/\")\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), add(ret, _1), length_1)\n        end := add(add(ret, length_1), _1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "271:1650:65:-:0;;;605:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;663:8;:18;;-1:-1:-1;;;;;691:23:65;;;-1:-1:-1;;;691:23:65;-1:-1:-1;;;;;;691:23:65;;;-1:-1:-1;;;;;663:18:65;;;691:23;;;;;;;271:1650;;14:463:81;92:6;100;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;195:16;;-1:-1:-1;;;;;240:31:81;;230:42;;220:70;;286:1;283;276:12;220:70;359:2;344:18;;338:25;309:5;;-1:-1:-1;;;;;;394:32:81;;382:45;;372:73;;441:1;438;431:12;372:73;464:7;454:17;;;14:463;;;;;:::o;:::-;271:1650:65;;;;;;",
  "deployedSourceMap": "271:1650:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;788:230;;;;;;:::i;:::-;;:::i;:::-;;;470:14:81;;463:22;445:41;;433:2;418:18;788:230:65;;;;;;;;1166:343;;;;;;:::i;:::-;;:::i;:::-;;1024:136;;;;;;:::i;:::-;;:::i;1515:81::-;;;;;;:::i;:::-;;:::i;1602:316::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;788:230::-;890:4;-1:-1:-1;;;;;;913:58:65;;-1:-1:-1;;;913:58:65;;:98;;-1:-1:-1;;;;;;;;;;937:40:19;;;975:36:65;906:105;788:230;-1:-1:-1;;788:230:65:o;1166:343::-;1234:20;1270:5;1257:19;;-1:-1:-1;;;;;1257:19:65;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1257:19:65;;1234:42;;1291:6;1286:121;1307:5;1303:9;;:1;:9;1286:121;;;1346:10;;;1363:1;;1346:14;;-1:-1:-1;;;1346:10:65;;-1:-1:-1;;;;;1346:10:65;;:14;:::i;:::-;-1:-1:-1;;;;;1346:18:65;;;;;:::i;:::-;1329:4;1334:1;1329:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1329:36:65;;;:7;;;;;;;;;;;:36;1391:3;;1286:121;;;;1430:5;1416:19;;:10;;:19;;;;;;;;;;-1:-1:-1;;;;;1416:19:65;;;;;:::i;:::-;;;-1:-1:-1;;;;;1416:19:65;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1464:8:65;1445:57;;-1:-1:-1;;;1445:57:65;;-1:-1:-1;;;;;1464:8:65;;;;1445:47;;:57;;1493:2;;1497:4;;1445:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1445:57:65;;;;;;;;;;;;:::i;:::-;;1224:285;1166:343;;:::o;1024:136::-;1073:10;:12;;-1:-1:-1;;;1073:12:65;;-1:-1:-1;;;;;1073:12:65;;:10;:12;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1073:12:65;;;;;;;;;;;;;;;-1:-1:-1;1114:8:65;1095:58;;-1:-1:-1;;;1095:58:65;;-1:-1:-1;;;;;5711:32:81;;;1095:58:65;;;5693:51:81;-1:-1:-1;;;1142:10:65;;;;;5760:18:81;;;5753:59;1114:8:65;;;-1:-1:-1;1095:42:65;;5666:18:81;;1095:58:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1024:136;:::o;1515:81::-;1574:9;:15;1586:3;;1574:9;:15;:::i;:::-;;1515:81;;:::o;1602:316::-;1738:8;;1694:13;;-1:-1:-1;;;;;1727:19:65;;;1738:8;;1727:19;1719:39;;;;-1:-1:-1;;;1719:39:65;;8657:2:81;1719:39:65;;;8639:21:81;8696:1;8676:18;;;8669:29;-1:-1:-1;;;8714:18:81;;;8707:37;8761:18;;1719:39:65;;;;;;;;1782:46;;-1:-1:-1;;;1782:46:65;;;;;8936:25:81;;;1768:11:65;;-1:-1:-1;;;;;1782:37:65;;;;;8909:18:81;;1782:46:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1768:60;;1869:9;1885:24;1893:4;-1:-1:-1;;;;;1885:13:65;:22;:24::i;:::-;1852:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1838:73;;;1602:316;;;;:::o;415:696:18:-;471:13;520:14;537:17;548:5;537:10;:17::i;:::-;557:1;537:21;520:38;;572:20;606:6;-1:-1:-1;;;;;595:18:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;595:18:18;-1:-1:-1;572:41:18;-1:-1:-1;733:28:18;;;749:2;733:28;788:280;-1:-1:-1;;819:5:18;-1:-1:-1;;;953:2:18;942:14;;937:30;819:5;924:44;1012:2;1003:11;;;-1:-1:-1;1032:21:18;788:280;1032:21;-1:-1:-1;1088:6:18;415:696;-1:-1:-1;;;415:696:18:o;9889:890:22:-;9942:7;;-1:-1:-1;;;10017:15:22;;10013:99;;-1:-1:-1;;;10052:15:22;;;-1:-1:-1;10095:2:22;10085:12;10013:99;-1:-1:-1;;;10129:5:22;:15;10125:99;;-1:-1:-1;;;10164:15:22;;;-1:-1:-1;10207:2:22;10197:12;10125:99;10250:6;10241:5;:15;10237:99;;10285:6;10276:15;;;-1:-1:-1;10319:2:22;10309:12;10237:99;10362:5;10353;:14;10349:96;;10396:5;10387:14;;;-1:-1:-1;10429:1:22;10419:11;10349:96;10471:5;10462;:14;10458:96;;10505:5;10496:14;;;-1:-1:-1;10538:1:22;10528:11;10458:96;10580:5;10571;:14;10567:96;;10614:5;10605:14;;;-1:-1:-1;10647:1:22;10637:11;10567:96;10689:5;10680;:14;10676:64;;10724:1;10714:11;10766:6;9889:890;-1:-1:-1;;9889:890:22:o;14:286:81:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:81;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:81:o;497:173::-;565:20;;-1:-1:-1;;;;;614:31:81;;604:42;;594:70;;660:1;657;650:12;594:70;497:173;;;:::o;675:346::-;742:6;750;803:2;791:9;782:7;778:23;774:32;771:52;;;819:1;816;809:12;771:52;842:29;861:9;842:29;:::i;:::-;832:39;;921:2;910:9;906:18;893:32;965:6;958:5;954:18;947:5;944:29;934:57;;987:1;984;977:12;934:57;1010:5;1000:15;;;675:346;;;;;:::o;1026:186::-;1085:6;1138:2;1126:9;1117:7;1113:23;1109:32;1106:52;;;1154:1;1151;1144:12;1106:52;1177:29;1196:9;1177:29;:::i;1217:592::-;1288:6;1296;1349:2;1337:9;1328:7;1324:23;1320:32;1317:52;;;1365:1;1362;1355:12;1317:52;1405:9;1392:23;-1:-1:-1;;;;;1475:2:81;1467:6;1464:14;1461:34;;;1491:1;1488;1481:12;1461:34;1529:6;1518:9;1514:22;1504:32;;1574:7;1567:4;1563:2;1559:13;1555:27;1545:55;;1596:1;1593;1586:12;1545:55;1636:2;1623:16;1662:2;1654:6;1651:14;1648:34;;;1678:1;1675;1668:12;1648:34;1723:7;1718:2;1709:6;1705:2;1701:15;1697:24;1694:37;1691:57;;;1744:1;1741;1734:12;1691:57;1775:2;1767:11;;;;;1797:6;;-1:-1:-1;1217:592:81;;-1:-1:-1;;;;1217:592:81:o;1814:254::-;1882:6;1890;1943:2;1931:9;1922:7;1918:23;1914:32;1911:52;;;1959:1;1956;1949:12;1911:52;1982:29;2001:9;1982:29;:::i;:::-;1972:39;2058:2;2043:18;;;;2030:32;;-1:-1:-1;;;1814:254:81:o;2073:250::-;2158:1;2168:113;2182:6;2179:1;2176:13;2168:113;;;2258:11;;;2252:18;2239:11;;;2232:39;2204:2;2197:10;2168:113;;;-1:-1:-1;;2315:1:81;2297:16;;2290:27;2073:250::o;2328:396::-;2477:2;2466:9;2459:21;2440:4;2509:6;2503:13;2552:6;2547:2;2536:9;2532:18;2525:34;2568:79;2640:6;2635:2;2624:9;2620:18;2615:2;2607:6;2603:15;2568:79;:::i;:::-;2708:2;2687:15;-1:-1:-1;;2683:29:81;2668:45;;;;2715:2;2664:54;;2328:396;-1:-1:-1;;2328:396:81:o;2729:127::-;2790:10;2785:3;2781:20;2778:1;2771:31;2821:4;2818:1;2811:15;2845:4;2842:1;2835:15;2861:127;2922:10;2917:3;2913:20;2910:1;2903:31;2953:4;2950:1;2943:15;2977:4;2974:1;2967:15;2993:180;-1:-1:-1;;;;;3098:10:81;;;3110;;;3094:27;;3133:11;;;3130:37;;;3147:18;;:::i;:::-;3130:37;2993:180;;;;:::o;3178:125::-;3243:9;;;3264:10;;;3261:36;;;3277:18;;:::i;3308:127::-;3369:10;3364:3;3360:20;3357:1;3350:31;3400:4;3397:1;3390:15;3424:4;3421:1;3414:15;3440:752;-1:-1:-1;;;;;3686:32:81;;3668:51;;3656:2;3738;3756:18;;;3749:30;;;3828:13;;3641:18;;;3850:22;;;3608:4;;3929:15;;;;3738:2;3903;3888:18;;;3608:4;3972:194;3986:6;3983:1;3980:13;3972:194;;;4051:13;;-1:-1:-1;;;;;4047:38:81;4035:51;;4141:15;;;;4106:12;;;;4082:1;4001:9;3972:194;;;-1:-1:-1;4183:3:81;;3440:752;-1:-1:-1;;;;;;;3440:752:81:o;4197:1105::-;4292:6;4323:2;4366;4354:9;4345:7;4341:23;4337:32;4334:52;;;4382:1;4379;4372:12;4334:52;4415:9;4409:16;-1:-1:-1;;;;;4485:2:81;4477:6;4474:14;4471:34;;;4501:1;4498;4491:12;4471:34;4539:6;4528:9;4524:22;4514:32;;4584:7;4577:4;4573:2;4569:13;4565:27;4555:55;;4606:1;4603;4596:12;4555:55;4635:2;4629:9;4657:2;4653;4650:10;4647:36;;;4663:18;;:::i;:::-;4709:2;4706:1;4702:10;4741:2;4735:9;4804:2;4800:7;4795:2;4791;4787:11;4783:25;4775:6;4771:38;4859:6;4847:10;4844:22;4839:2;4827:10;4824:18;4821:46;4818:72;;;4870:18;;:::i;:::-;4906:2;4899:22;4956:18;;;4990:15;;;;-1:-1:-1;5032:11:81;;;5028:20;;;5060:19;;;5057:39;;;5092:1;5089;5082:12;5057:39;5116:11;;;;5136:135;5152:6;5147:3;5144:15;5136:135;;;5218:10;;5206:23;;5169:12;;;;5249;;;;5136:135;;;5290:6;4197:1105;-1:-1:-1;;;;;;;;4197:1105:81:o;5307:209::-;5345:3;-1:-1:-1;;;;;5415:14:81;;;-1:-1:-1;;;;;;5441:15:81;;5438:41;;5459:18;;:::i;:::-;5508:1;5495:15;;5307:209;-1:-1:-1;;;5307:209:81:o;5823:184::-;5893:6;5946:2;5934:9;5925:7;5921:23;5917:32;5914:52;;;5962:1;5959;5952:12;5914:52;-1:-1:-1;5985:16:81;;5823:184;-1:-1:-1;5823:184:81:o;6012:380::-;6091:1;6087:12;;;;6134;;;6155:61;;6209:4;6201:6;6197:17;6187:27;;6155:61;6262:2;6254:6;6251:14;6231:18;6228:38;6225:161;;6308:10;6303:3;6299:20;6296:1;6289:31;6343:4;6340:1;6333:15;6371:4;6368:1;6361:15;6225:161;;6012:380;;;:::o;6523:545::-;6625:2;6620:3;6617:11;6614:448;;;6661:1;6686:5;6682:2;6675:17;6731:4;6727:2;6717:19;6801:2;6789:10;6785:19;6782:1;6778:27;6772:4;6768:38;6837:4;6825:10;6822:20;6819:47;;;-1:-1:-1;6860:4:81;6819:47;6915:2;6910:3;6906:12;6903:1;6899:20;6893:4;6889:31;6879:41;;6970:82;6988:2;6981:5;6978:13;6970:82;;;7033:17;;;7014:1;7003:13;6970:82;;;6974:3;;;6523:545;;;:::o;7244:1206::-;-1:-1:-1;;;;;7363:3:81;7360:27;7357:53;;;7390:18;;:::i;:::-;7419:94;7509:3;7469:38;7501:4;7495:11;7469:38;:::i;:::-;7463:4;7419:94;:::i;:::-;7539:1;7564:2;7559:3;7556:11;7581:1;7576:616;;;;8236:1;8253:3;8250:93;;;-1:-1:-1;8309:19:81;;;8296:33;8250:93;-1:-1:-1;;7201:1:81;7197:11;;;7193:24;7189:29;7179:40;7225:1;7221:11;;;7176:57;8356:78;;7549:895;;7576:616;6470:1;6463:14;;;6507:4;6494:18;;-1:-1:-1;;7612:17:81;;;7713:9;7735:229;7749:7;7746:1;7743:14;7735:229;;;7838:19;;;7825:33;7810:49;;7945:4;7930:20;;;;7898:1;7886:14;;;;7765:12;7735:229;;;7739:3;7992;7983:7;7980:16;7977:159;;;8116:1;8112:6;8106:3;8100;8097:1;8093:11;8089:21;8085:34;8081:39;8068:9;8063:3;8059:19;8046:33;8042:79;8034:6;8027:95;7977:159;;;8179:1;8173:3;8170:1;8166:11;8162:19;8156:4;8149:33;7549:895;;;7244:1206;;;:::o;8972:288::-;9041:6;9094:2;9082:9;9073:7;9069:23;9065:32;9062:52;;;9110:1;9107;9100:12;9062:52;9136:16;;-1:-1:-1;;;;;9181:30:81;;9171:41;;9161:69;;9226:1;9223;9216:12;9265:1164;9542:3;9571:1;9604:6;9598:13;9634:36;9660:9;9634:36;:::i;:::-;9689:1;9706:18;;;9733:133;;;;9880:1;9875:356;;;;9699:532;;9733:133;-1:-1:-1;;9766:24:81;;9754:37;;9839:14;;9832:22;9820:35;;9811:45;;;-1:-1:-1;9733:133:81;;9875:356;9906:6;9903:1;9896:17;9936:4;9981:2;9978:1;9968:16;10006:1;10020:165;10034:6;10031:1;10028:13;10020:165;;;10112:14;;10099:11;;;10092:35;10155:16;;;;10049:10;;10020:165;;;10024:3;;;10214:6;10209:3;10205:16;10198:23;;9699:532;;-1:-1:-1;;;10247:3:81;10240:16;10287:6;10281:13;10265:29;;10303:77;10371:8;10366:2;10361:3;10357:12;10350:4;10342:6;10338:17;10303:77;:::i;:::-;10400:18;;;;10396:27;;;-1:-1:-1;;;;;9265:1164:81:o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"../core/IERC721CreatorCore.sol\";\nimport \"../extensions/ICreatorExtensionTokenURI.sol\";\n\ncontract MockERC721CreatorExtensionUniqueURI is ERC165, ICreatorExtensionTokenURI {\n    using Strings for uint256;\n\n    string _tokenURI;\n    address _creator;\n    uint80 _mintCount;\n    mapping(uint256 => RoyaltyInfo) _royaltyInfo;\n\n    struct RoyaltyInfo {\n        address payable[] recipients;\n        uint256[] values;\n    }\n\n    constructor(address creator, uint80 startIndex) {\n        _creator = creator;\n        _mintCount = startIndex;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    function testMint(address to) external {\n        _mintCount++;\n        IERC721CreatorCore(_creator).mintExtension(to, _mintCount);\n    }\n\n    function testMintBatch(address to, uint16 count) external {\n        uint80[] memory data = new uint80[](count);\n        for (uint i = 0; i < count;) {\n            data[i] = uint80(_mintCount + 1 + i);\n            unchecked { ++i; }\n        }\n        _mintCount += count;\n        IERC721CreatorCore(_creator).mintExtensionBatch(to, data);\n    }\n\n    function setTokenURI(string calldata uri) public {\n        _tokenURI = uri;\n    }\n\n    function tokenURI(address creator, uint256 tokenId) external view virtual override returns (string memory) {\n        require(creator == _creator, \"Invalid\");\n        uint80 data = IERC721CreatorCore(creator).tokenData(tokenId);\n        return string(abi.encodePacked(_tokenURI, '/', uint256(data).toString()));\n    }\n\n}\n",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/mocks/MockERC721CreatorExtensionUniqueURI.sol",
  "ast": {
    "absolutePath": "project:/contracts/mocks/MockERC721CreatorExtensionUniqueURI.sol",
    "exportedSymbols": {
      "ERC165": [
        2132
      ],
      "ICreatorCore": [
        15197
      ],
      "ICreatorExtensionTokenURI": [
        16591
      ],
      "IERC165": [
        2338
      ],
      "IERC721CreatorCore": [
        15407
      ],
      "Math": [
        3203
      ],
      "MockERC721CreatorExtensionUniqueURI": [
        17913
      ],
      "Strings": [
        2108
      ]
    },
    "id": 17914,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17717,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:65"
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
        "file": "@openzeppelin/contracts/utils/Strings.sol",
        "id": 17718,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17914,
        "sourceUnit": 2109,
        "src": "58:51:65",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "id": 17719,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17914,
        "sourceUnit": 2133,
        "src": "110:64:65",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/IERC721CreatorCore.sol",
        "file": "../core/IERC721CreatorCore.sol",
        "id": 17720,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17914,
        "sourceUnit": 15408,
        "src": "175:40:65",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/extensions/ICreatorExtensionTokenURI.sol",
        "file": "../extensions/ICreatorExtensionTokenURI.sol",
        "id": 17721,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17914,
        "sourceUnit": 16592,
        "src": "216:53:65",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 17722,
              "name": "ERC165",
              "nameLocations": [
                "319:6:65"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2132,
              "src": "319:6:65"
            },
            "id": 17723,
            "nodeType": "InheritanceSpecifier",
            "src": "319:6:65"
          },
          {
            "baseName": {
              "id": 17724,
              "name": "ICreatorExtensionTokenURI",
              "nameLocations": [
                "327:25:65"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 16591,
              "src": "327:25:65"
            },
            "id": 17725,
            "nodeType": "InheritanceSpecifier",
            "src": "327:25:65"
          }
        ],
        "canonicalName": "MockERC721CreatorExtensionUniqueURI",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 17913,
        "linearizedBaseContracts": [
          17913,
          16591,
          2132,
          2338
        ],
        "name": "MockERC721CreatorExtensionUniqueURI",
        "nameLocation": "280:35:65",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 17728,
            "libraryName": {
              "id": 17726,
              "name": "Strings",
              "nameLocations": [
                "365:7:65"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2108,
              "src": "365:7:65"
            },
            "nodeType": "UsingForDirective",
            "src": "359:26:65",
            "typeName": {
              "id": 17727,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "377:7:65",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 17730,
            "mutability": "mutable",
            "name": "_tokenURI",
            "nameLocation": "398:9:65",
            "nodeType": "VariableDeclaration",
            "scope": 17913,
            "src": "391:16:65",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 17729,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "391:6:65",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 17732,
            "mutability": "mutable",
            "name": "_creator",
            "nameLocation": "421:8:65",
            "nodeType": "VariableDeclaration",
            "scope": 17913,
            "src": "413:16:65",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17731,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "413:7:65",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 17734,
            "mutability": "mutable",
            "name": "_mintCount",
            "nameLocation": "442:10:65",
            "nodeType": "VariableDeclaration",
            "scope": 17913,
            "src": "435:17:65",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint80",
              "typeString": "uint80"
            },
            "typeName": {
              "id": 17733,
              "name": "uint80",
              "nodeType": "ElementaryTypeName",
              "src": "435:6:65",
              "typeDescriptions": {
                "typeIdentifier": "t_uint80",
                "typeString": "uint80"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 17739,
            "mutability": "mutable",
            "name": "_royaltyInfo",
            "nameLocation": "490:12:65",
            "nodeType": "VariableDeclaration",
            "scope": 17913,
            "src": "458:44:65",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$17746_storage_$",
              "typeString": "mapping(uint256 => struct MockERC721CreatorExtensionUniqueURI.RoyaltyInfo)"
            },
            "typeName": {
              "id": 17738,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 17735,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "466:7:65",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "458:31:65",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$17746_storage_$",
                "typeString": "mapping(uint256 => struct MockERC721CreatorExtensionUniqueURI.RoyaltyInfo)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 17737,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 17736,
                  "name": "RoyaltyInfo",
                  "nameLocations": [
                    "477:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17746,
                  "src": "477:11:65"
                },
                "referencedDeclaration": 17746,
                "src": "477:11:65",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RoyaltyInfo_$17746_storage_ptr",
                  "typeString": "struct MockERC721CreatorExtensionUniqueURI.RoyaltyInfo"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "MockERC721CreatorExtensionUniqueURI.RoyaltyInfo",
            "id": 17746,
            "members": [
              {
                "constant": false,
                "id": 17742,
                "mutability": "mutable",
                "name": "recipients",
                "nameLocation": "556:10:65",
                "nodeType": "VariableDeclaration",
                "scope": 17746,
                "src": "538:28:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                  "typeString": "address payable[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 17740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "538:15:65",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 17741,
                  "nodeType": "ArrayTypeName",
                  "src": "538:17:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                    "typeString": "address payable[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17745,
                "mutability": "mutable",
                "name": "values",
                "nameLocation": "586:6:65",
                "nodeType": "VariableDeclaration",
                "scope": 17746,
                "src": "576:16:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 17743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "576:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17744,
                  "nodeType": "ArrayTypeName",
                  "src": "576:9:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RoyaltyInfo",
            "nameLocation": "516:11:65",
            "nodeType": "StructDefinition",
            "scope": 17913,
            "src": "509:90:65",
            "visibility": "public"
          },
          {
            "body": {
              "id": 17761,
              "nodeType": "Block",
              "src": "653:68:65",
              "statements": [
                {
                  "expression": {
                    "id": 17755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17753,
                      "name": "_creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17732,
                      "src": "663:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17754,
                      "name": "creator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17748,
                      "src": "674:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "663:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17756,
                  "nodeType": "ExpressionStatement",
                  "src": "663:18:65"
                },
                {
                  "expression": {
                    "id": 17759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17757,
                      "name": "_mintCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17734,
                      "src": "691:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17758,
                      "name": "startIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17750,
                      "src": "704:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      }
                    },
                    "src": "691:23:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "id": 17760,
                  "nodeType": "ExpressionStatement",
                  "src": "691:23:65"
                }
              ]
            },
            "id": 17762,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17748,
                  "mutability": "mutable",
                  "name": "creator",
                  "nameLocation": "625:7:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17762,
                  "src": "617:15:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17747,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "617:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17750,
                  "mutability": "mutable",
                  "name": "startIndex",
                  "nameLocation": "641:10:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17762,
                  "src": "634:17:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint80",
                    "typeString": "uint80"
                  },
                  "typeName": {
                    "id": 17749,
                    "name": "uint80",
                    "nodeType": "ElementaryTypeName",
                    "src": "634:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "616:36:65"
            },
            "returnParameters": {
              "id": 17752,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "653:0:65"
            },
            "scope": 17913,
            "src": "605:116:65",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2131,
              2337
            ],
            "body": {
              "id": 17785,
              "nodeType": "Block",
              "src": "896:122:65",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 17783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 17778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 17773,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17765,
                        "src": "913:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17775,
                              "name": "ICreatorExtensionTokenURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16591,
                              "src": "933:25:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ICreatorExtensionTokenURI_$16591_$",
                                "typeString": "type(contract ICreatorExtensionTokenURI)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_ICreatorExtensionTokenURI_$16591_$",
                                "typeString": "type(contract ICreatorExtensionTokenURI)"
                              }
                            ],
                            "id": 17774,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "928:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 17776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "928:31:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_ICreatorExtensionTokenURI_$16591",
                            "typeString": "type(contract ICreatorExtensionTokenURI)"
                          }
                        },
                        "id": 17777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "960:11:65",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "928:43:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "913:58:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 17781,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17765,
                          "src": "999:11:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 17779,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967271,
                          "src": "975:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_MockERC721CreatorExtensionUniqueURI_$17913_$",
                            "typeString": "type(contract super MockERC721CreatorExtensionUniqueURI)"
                          }
                        },
                        "id": 17780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "981:17:65",
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2131,
                        "src": "975:23:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 17782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "975:36:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "913:98:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17772,
                  "id": 17784,
                  "nodeType": "Return",
                  "src": "906:105:65"
                }
              ]
            },
            "documentation": {
              "id": 17763,
              "nodeType": "StructuredDocumentation",
              "src": "727:56:65",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 17786,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "797:17:65",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17769,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 17767,
                  "name": "ERC165",
                  "nameLocations": [
                    "864:6:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2132,
                  "src": "864:6:65"
                },
                {
                  "id": 17768,
                  "name": "IERC165",
                  "nameLocations": [
                    "872:7:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2338,
                  "src": "872:7:65"
                }
              ],
              "src": "855:25:65"
            },
            "parameters": {
              "id": 17766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17765,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "822:11:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17786,
                  "src": "815:18:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17764,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "814:20:65"
            },
            "returnParameters": {
              "id": 17772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17771,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17786,
                  "src": "890:4:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17770,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "890:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "889:6:65"
            },
            "scope": 17913,
            "src": "788:230:65",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17802,
              "nodeType": "Block",
              "src": "1063:97:65",
              "statements": [
                {
                  "expression": {
                    "id": 17792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "1073:12:65",
                    "subExpression": {
                      "id": 17791,
                      "name": "_mintCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17734,
                      "src": "1073:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "id": 17793,
                  "nodeType": "ExpressionStatement",
                  "src": "1073:12:65"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17798,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17788,
                        "src": "1138:2:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17799,
                        "name": "_mintCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17734,
                        "src": "1142:10:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 17795,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17732,
                            "src": "1114:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17794,
                          "name": "IERC721CreatorCore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15407,
                          "src": "1095:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721CreatorCore_$15407_$",
                            "typeString": "type(contract IERC721CreatorCore)"
                          }
                        },
                        "id": 17796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1095:28:65",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721CreatorCore_$15407",
                          "typeString": "contract IERC721CreatorCore"
                        }
                      },
                      "id": 17797,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1124:13:65",
                      "memberName": "mintExtension",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15357,
                      "src": "1095:42:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint80_$returns$_t_uint256_$",
                        "typeString": "function (address,uint80) external returns (uint256)"
                      }
                    },
                    "id": 17800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1095:58:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17801,
                  "nodeType": "ExpressionStatement",
                  "src": "1095:58:65"
                }
              ]
            },
            "functionSelector": "c70c875a",
            "id": 17803,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testMint",
            "nameLocation": "1033:8:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17788,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1050:2:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17803,
                  "src": "1042:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1041:12:65"
            },
            "returnParameters": {
              "id": 17790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1063:0:65"
            },
            "scope": 17913,
            "src": "1024:136:65",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 17859,
              "nodeType": "Block",
              "src": "1224:285:65",
              "statements": [
                {
                  "assignments": [
                    17814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17814,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "1250:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17859,
                      "src": "1234:20:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint80_$dyn_memory_ptr",
                        "typeString": "uint80[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17812,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "id": 17813,
                        "nodeType": "ArrayTypeName",
                        "src": "1234:8:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_storage_ptr",
                          "typeString": "uint80[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17820,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 17818,
                        "name": "count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17807,
                        "src": "1270:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 17817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1257:12:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint80_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint80[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17815,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "1261:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "id": 17816,
                        "nodeType": "ArrayTypeName",
                        "src": "1261:8:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_storage_ptr",
                          "typeString": "uint80[]"
                        }
                      }
                    },
                    "id": 17819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1257:19:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint80_$dyn_memory_ptr",
                      "typeString": "uint80[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1234:42:65"
                },
                {
                  "body": {
                    "id": 17845,
                    "nodeType": "Block",
                    "src": "1315:92:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 17839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17828,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17814,
                              "src": "1329:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint80_$dyn_memory_ptr",
                                "typeString": "uint80[] memory"
                              }
                            },
                            "id": 17830,
                            "indexExpression": {
                              "id": 17829,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17822,
                              "src": "1334:1:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1329:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint80",
                                    "typeString": "uint80"
                                  },
                                  "id": 17835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 17833,
                                    "name": "_mintCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17734,
                                    "src": "1346:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint80",
                                      "typeString": "uint80"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 17834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1359:1:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "1346:14:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint80",
                                    "typeString": "uint80"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 17836,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17822,
                                  "src": "1363:1:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1346:18:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 17832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1339:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint80_$",
                                "typeString": "type(uint80)"
                              },
                              "typeName": {
                                "id": 17831,
                                "name": "uint80",
                                "nodeType": "ElementaryTypeName",
                                "src": "1339:6:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1339:26:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          },
                          "src": "1329:36:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "id": 17840,
                        "nodeType": "ExpressionStatement",
                        "src": "1329:36:65"
                      },
                      {
                        "id": 17844,
                        "nodeType": "UncheckedBlock",
                        "src": "1379:18:65",
                        "statements": [
                          {
                            "expression": {
                              "id": 17842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "1391:3:65",
                              "subExpression": {
                                "id": 17841,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17822,
                                "src": "1393:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17843,
                            "nodeType": "ExpressionStatement",
                            "src": "1391:3:65"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17825,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17822,
                      "src": "1303:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 17826,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17807,
                      "src": "1307:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1303:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17846,
                  "initializationExpression": {
                    "assignments": [
                      17822
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17822,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "1296:1:65",
                        "nodeType": "VariableDeclaration",
                        "scope": 17846,
                        "src": "1291:6:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17821,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1291:4:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 17824,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 17823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1300:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1291:10:65"
                  },
                  "nodeType": "ForStatement",
                  "src": "1286:121:65"
                },
                {
                  "expression": {
                    "id": 17849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17847,
                      "name": "_mintCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17734,
                      "src": "1416:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 17848,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17807,
                      "src": "1430:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1416:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "id": 17850,
                  "nodeType": "ExpressionStatement",
                  "src": "1416:19:65"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17855,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17805,
                        "src": "1493:2:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17856,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17814,
                        "src": "1497:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_memory_ptr",
                          "typeString": "uint80[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint80_$dyn_memory_ptr",
                          "typeString": "uint80[] memory"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 17852,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17732,
                            "src": "1464:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17851,
                          "name": "IERC721CreatorCore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15407,
                          "src": "1445:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721CreatorCore_$15407_$",
                            "typeString": "type(contract IERC721CreatorCore)"
                          }
                        },
                        "id": 17853,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1445:28:65",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721CreatorCore_$15407",
                          "typeString": "contract IERC721CreatorCore"
                        }
                      },
                      "id": 17854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1474:18:65",
                      "memberName": "mintExtensionBatch",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15392,
                      "src": "1445:47:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_uint80_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint80[] memory) external returns (uint256[] memory)"
                      }
                    },
                    "id": 17857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1445:57:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 17858,
                  "nodeType": "ExpressionStatement",
                  "src": "1445:57:65"
                }
              ]
            },
            "functionSelector": "580cf31b",
            "id": 17860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testMintBatch",
            "nameLocation": "1175:13:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17805,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1197:2:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17860,
                  "src": "1189:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17804,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1189:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17807,
                  "mutability": "mutable",
                  "name": "count",
                  "nameLocation": "1208:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17860,
                  "src": "1201:12:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 17806,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1201:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1188:26:65"
            },
            "returnParameters": {
              "id": 17809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1224:0:65"
            },
            "scope": 17913,
            "src": "1166:343:65",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 17869,
              "nodeType": "Block",
              "src": "1564:32:65",
              "statements": [
                {
                  "expression": {
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17865,
                      "name": "_tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17730,
                      "src": "1574:9:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17866,
                      "name": "uri",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17862,
                      "src": "1586:3:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string calldata"
                      }
                    },
                    "src": "1574:15:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 17868,
                  "nodeType": "ExpressionStatement",
                  "src": "1574:15:65"
                }
              ]
            },
            "functionSelector": "e0df5b6f",
            "id": 17870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURI",
            "nameLocation": "1524:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17862,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "1552:3:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17870,
                  "src": "1536:19:65",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17861,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1536:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1535:21:65"
            },
            "returnParameters": {
              "id": 17864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1564:0:65"
            },
            "scope": 17913,
            "src": "1515:81:65",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16590
            ],
            "body": {
              "id": 17911,
              "nodeType": "Block",
              "src": "1709:209:65",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 17883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 17881,
                          "name": "creator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17872,
                          "src": "1727:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 17882,
                          "name": "_creator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17732,
                          "src": "1738:8:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1727:19:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c6964",
                        "id": 17884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1748:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345",
                          "typeString": "literal_string \"Invalid\""
                        },
                        "value": "Invalid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345",
                          "typeString": "literal_string \"Invalid\""
                        }
                      ],
                      "id": 17880,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1719:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1719:39:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17886,
                  "nodeType": "ExpressionStatement",
                  "src": "1719:39:65"
                },
                {
                  "assignments": [
                    17888
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17888,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "1775:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17911,
                      "src": "1768:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint80",
                        "typeString": "uint80"
                      },
                      "typeName": {
                        "id": 17887,
                        "name": "uint80",
                        "nodeType": "ElementaryTypeName",
                        "src": "1768:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17895,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 17893,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17874,
                        "src": "1820:7:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 17890,
                            "name": "creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17872,
                            "src": "1801:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17889,
                          "name": "IERC721CreatorCore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15407,
                          "src": "1782:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC721CreatorCore_$15407_$",
                            "typeString": "type(contract IERC721CreatorCore)"
                          }
                        },
                        "id": 17891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1782:27:65",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721CreatorCore_$15407",
                          "typeString": "contract IERC721CreatorCore"
                        }
                      },
                      "id": 17892,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1810:9:65",
                      "memberName": "tokenData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15406,
                      "src": "1782:37:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint80_$",
                        "typeString": "function (uint256) view external returns (uint80)"
                      }
                    },
                    "id": 17894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1782:46:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint80",
                      "typeString": "uint80"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1768:60:65"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17900,
                            "name": "_tokenURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17730,
                            "src": "1869:9:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          {
                            "hexValue": "2f",
                            "id": 17901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1880:3:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                              "typeString": "literal_string \"/\""
                            },
                            "value": "/"
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 17904,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17888,
                                    "src": "1893:4:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint80",
                                      "typeString": "uint80"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint80",
                                      "typeString": "uint80"
                                    }
                                  ],
                                  "id": 17903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1885:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 17902,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1885:7:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1885:13:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1899:8:65",
                              "memberName": "toString",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1991,
                              "src": "1885:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (string memory)"
                              }
                            },
                            "id": 17907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1885:24:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                              "typeString": "literal_string \"/\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17898,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1852:3:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1856:12:65",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "1852:16:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 17908,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1852:58:65",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1845:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 17896,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1845:6:65",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1845:66:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 17879,
                  "id": 17910,
                  "nodeType": "Return",
                  "src": "1838:73:65"
                }
              ]
            },
            "functionSelector": "e9dc6375",
            "id": 17912,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "1611:8:65",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17876,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1676:8:65"
            },
            "parameters": {
              "id": 17875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17872,
                  "mutability": "mutable",
                  "name": "creator",
                  "nameLocation": "1628:7:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17912,
                  "src": "1620:15:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17871,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17874,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "1645:7:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17912,
                  "src": "1637:15:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17873,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1637:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1619:34:65"
            },
            "returnParameters": {
              "id": 17879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17878,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17912,
                  "src": "1694:13:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17877,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1694:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1693:15:65"
            },
            "scope": 17913,
            "src": "1602:316:65",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 17914,
        "src": "271:1650:65",
        "usedErrors": []
      }
    ],
    "src": "33:1889:65"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.816Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "tokenURI(address,uint256)": {
        "notice": "Get the uri for a given creator/tokenId"
      }
    },
    "version": 1
  }
}