{
    "contractName": "AliceERC20",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A basic token for testing the HashedTimelockERC20.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/AliceERC20.sol\":\"AliceERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/AliceERC20.sol\":{\"keccak256\":\"0xeee12067a3428970a8c0eaa13b89b768edc3f054ce46439aa048572d27ee1510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8f970ffd21b4358ab2f069b4b0cb7925cddda1f50192f6b32c707c435c16c14\",\"dweb:/ipfs/QmWKP3BgpYRcRuLBExrLeehRYXxwdSG6wtiyAYQ95UU32K\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
    "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f416c69636520546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f416c696365546f6b656e0000000000000000000000000000000000000000000081525081600390816200008f9190620004b7565b508060049081620000a19190620004b7565b505050620000c03369d3c21bcecceda1000000620000c660201b60201c565b620006b9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012f90620005ff565b60405180910390fd5b6200014c600083836200023360201b60201c565b806002600082825462000160919062000650565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021391906200069c565b60405180910390a36200022f600083836200023860201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bf57607f821691505b602082108103620002d557620002d462000277565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000300565b6200034b868362000300565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000398620003926200038c8462000363565b6200036d565b62000363565b9050919050565b6000819050919050565b620003b48362000377565b620003cc620003c3826200039f565b8484546200030d565b825550505050565b600090565b620003e3620003d4565b620003f0818484620003a9565b505050565b5b8181101562000418576200040c600082620003d9565b600181019050620003f6565b5050565b601f82111562000467576200043181620002db565b6200043c84620002f0565b810160208510156200044c578190505b620004646200045b85620002f0565b830182620003f5565b50505b505050565b600082821c905092915050565b60006200048c600019846008026200046c565b1980831691505092915050565b6000620004a7838362000479565b9150826002028217905092915050565b620004c2826200023d565b67ffffffffffffffff811115620004de57620004dd62000248565b5b620004ea8254620002a6565b620004f78282856200041c565b600060209050601f8311600181146200052f57600084156200051a578287015190505b62000526858262000499565b86555062000596565b601f1984166200053f86620002db565b60005b82811015620005695784890151825560018201915060208501945060208101905062000542565b8683101562000589578489015162000585601f89168262000479565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005e7601f836200059e565b9150620005f482620005af565b602082019050919050565b600060208201905081810360008301526200061a81620005d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065d8262000363565b91506200066a8362000363565b925082820190508082111562000685576200068462000621565b5b92915050565b620006968162000363565b82525050565b6000602082019050620006b360008301846200068b565b92915050565b61122f80620006c96000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea2646970667358221220e4b62f933d6548d9b65bba2990ab26e5e09ecb6bf922939f6206b7c7bd4e610164736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea2646970667358221220e4b62f933d6548d9b65bba2990ab26e5e09ecb6bf922939f6206b7c7bd4e610164736f6c63430008110033",
    "immutableReferences": {},
    "generatedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:7125:19",
                "statements": [
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "66:40:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "77:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "93:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "87:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "87:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "77:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "49:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "59:6:19",
                                "type": ""
                            }
                        ],
                        "src": "7:99:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "140:152:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "157:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "160:77:19",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "150:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "150:88:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "150:88:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "254:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "257:4:19",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "247:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "247:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "247:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "278:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "281:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "271:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "271:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "271:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "112:180:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "326:152:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "343:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "346:77:19",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "336:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "336:88:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "336:88:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "440:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "443:4:19",
                                                "type": "",
                                                "value": "0x22"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "433:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "433:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "433:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "464:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "467:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "457:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "457:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "457:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x22",
                        "nodeType": "YulFunctionDefinition",
                        "src": "298:180:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "535:269:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "545:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "559:4:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "565:1:19",
                                                "type": "",
                                                "value": "2"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "555:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "555:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "545:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "576:38:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "606:4:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "612:1:19",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "602:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "602:12:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "580:18:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "653:51:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "667:27:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "681:6:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "689:4:19",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "677:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "677:17:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "667:6:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "633:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "626:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "626:26:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "623:81:19"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "756:42:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x22",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "770:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "770:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "770:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "720:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "743:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "751:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "740:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "740:14:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "717:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "717:38:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "714:84:19"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "519:4:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "528:6:19",
                                "type": ""
                            }
                        ],
                        "src": "484:320:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "864:87:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "874:11:19",
                                    "value": {
                                        "name": "ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "882:3:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "874:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "902:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "name": "ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "905:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "895:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "895:14:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "895:14:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "918:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "936:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "939:4:19",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "926:9:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "926:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "918:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_dataslot_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "ptr",
                                "nodeType": "YulTypedName",
                                "src": "851:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "859:4:19",
                                "type": ""
                            }
                        ],
                        "src": "810:141:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1001:49:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1011:33:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1029:5:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1036:2:19",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1025:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1025:14:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1041:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "1021:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1021:23:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "1011:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "divide_by_32_ceil",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "984:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "994:6:19",
                                "type": ""
                            }
                        ],
                        "src": "957:93:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1109:54:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1119:37:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "bits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1144:4:19"
                                            },
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1150:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1140:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1140:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "newValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "1119:8:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "shift_left_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "bits",
                                "nodeType": "YulTypedName",
                                "src": "1084:4:19",
                                "type": ""
                            },
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1090:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "newValue",
                                "nodeType": "YulTypedName",
                                "src": "1100:8:19",
                                "type": ""
                            }
                        ],
                        "src": "1056:107:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1245:317:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1255:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBytes",
                                                "nodeType": "YulIdentifier",
                                                "src": "1276:10:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1288:1:19",
                                                "type": "",
                                                "value": "8"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "1272:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1272:18:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "shiftBits",
                                            "nodeType": "YulTypedName",
                                            "src": "1259:9:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1299:109:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1330:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1341:66:19",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shift_left_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "1311:18:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1311:97:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "mask",
                                            "nodeType": "YulTypedName",
                                            "src": "1303:4:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1417:51:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "shiftBits",
                                                "nodeType": "YulIdentifier",
                                                "src": "1448:9:19"
                                            },
                                            {
                                                "name": "toInsert",
                                                "nodeType": "YulIdentifier",
                                                "src": "1459:8:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shift_left_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:18:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1429:39:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "toInsert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1417:8:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1477:30:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1490:5:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "mask",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1501:4:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1497:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1497:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "1486:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1486:21:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1477:5:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1516:40:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1529:5:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "toInsert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1540:8:19"
                                                    },
                                                    {
                                                        "name": "mask",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1550:4:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1536:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1536:19:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "1526:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1526:30:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "1516:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "update_byte_slice_dynamic32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1206:5:19",
                                "type": ""
                            },
                            {
                                "name": "shiftBytes",
                                "nodeType": "YulTypedName",
                                "src": "1213:10:19",
                                "type": ""
                            },
                            {
                                "name": "toInsert",
                                "nodeType": "YulTypedName",
                                "src": "1225:8:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "1238:6:19",
                                "type": ""
                            }
                        ],
                        "src": "1169:393:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1613:32:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1623:16:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "1623:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1595:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "1605:7:19",
                                "type": ""
                            }
                        ],
                        "src": "1568:77:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1683:28:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1693:12:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1700:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "1693:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "identity",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1669:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "1679:3:19",
                                "type": ""
                            }
                        ],
                        "src": "1651:60:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1777:82:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1787:66:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1845:5:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1827:17:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1827:24:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "identity",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1818:8:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1818:34:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "1800:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1800:53:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "converted",
                                            "nodeType": "YulIdentifier",
                                            "src": "1787:9:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "convert_t_uint256_to_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1757:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "converted",
                                "nodeType": "YulTypedName",
                                "src": "1767:9:19",
                                "type": ""
                            }
                        ],
                        "src": "1717:142:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1912:28:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1922:12:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "1922:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "prepare_store_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1898:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "1908:3:19",
                                "type": ""
                            }
                        ],
                        "src": "1865:75:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2022:193:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2032:63:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value_0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2087:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "convert_t_uint256_to_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2056:30:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2056:39:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "convertedValue_0",
                                            "nodeType": "YulTypedName",
                                            "src": "2036:16:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "2111:4:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "slot",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2151:4:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2145:5:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2145:11:19"
                                                    },
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2158:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "convertedValue_0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2190:16:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "prepare_store_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2166:23:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2166:41:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "update_byte_slice_dynamic32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2117:27:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2117:91:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2104:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2104:105:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2104:105:19"
                                }
                            ]
                        },
                        "name": "update_storage_value_t_uint256_to_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "1999:4:19",
                                "type": ""
                            },
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2005:6:19",
                                "type": ""
                            },
                            {
                                "name": "value_0",
                                "nodeType": "YulTypedName",
                                "src": "2013:7:19",
                                "type": ""
                            }
                        ],
                        "src": "1946:269:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2270:24:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2280:8:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2287:1:19",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "2280:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "zero_value_for_split_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "2266:3:19",
                                "type": ""
                            }
                        ],
                        "src": "2221:73:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2353:136:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2363:46:19",
                                    "value": {
                                        "arguments": [],
                                        "functionName": {
                                            "name": "zero_value_for_split_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2377:30:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2377:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "zero_0",
                                            "nodeType": "YulTypedName",
                                            "src": "2367:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "2462:4:19"
                                            },
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2468:6:19"
                                            },
                                            {
                                                "name": "zero_0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2476:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "update_storage_value_t_uint256_to_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2418:43:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2418:65:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2418:65:19"
                                }
                            ]
                        },
                        "name": "storage_set_to_zero_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "2339:4:19",
                                "type": ""
                            },
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2345:6:19",
                                "type": ""
                            }
                        ],
                        "src": "2300:189:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2545:136:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2612:63:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2656:5:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2663:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "storage_set_to_zero_t_uint256",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2626:29:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2626:39:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2626:39:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "2565:5:19"
                                            },
                                            {
                                                "name": "end",
                                                "nodeType": "YulIdentifier",
                                                "src": "2572:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2562:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2562:14:19"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "2577:26:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "2579:22:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2592:5:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2599:1:19",
                                                            "type": "",
                                                            "value": "1"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2588:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2588:13:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "start",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2579:5:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "2559:2:19",
                                        "statements": []
                                    },
                                    "src": "2555:120:19"
                                }
                            ]
                        },
                        "name": "clear_storage_range_t_bytes1",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "start",
                                "nodeType": "YulTypedName",
                                "src": "2533:5:19",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "2540:3:19",
                                "type": ""
                            }
                        ],
                        "src": "2495:186:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2766:464:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2792:431:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2806:54:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2854:5:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "array_dataslot_t_string_storage",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2822:31:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2822:38:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "dataArea",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2810:8:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2873:63:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "dataArea",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2896:8:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "startIndex",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2924:10:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "divide_by_32_ceil",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2906:17:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2906:29:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2892:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2892:44:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "deleteStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2877:11:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3093:27:19",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3095:23:19",
                                                            "value": {
                                                                "name": "dataArea",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3110:8:19"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "deleteStart",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3095:11:19"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "startIndex",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3077:10:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3089:2:19",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3074:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3074:18:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3071:49:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "deleteStart",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3162:11:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dataArea",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3179:8:19"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "len",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3207:3:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "divide_by_32_ceil",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3189:17:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3189:22:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3175:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3175:37:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "clear_storage_range_t_bytes1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3133:28:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3133:80:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3133:80:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "2783:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2788:2:19",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2780:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2780:11:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2777:446:19"
                                }
                            ]
                        },
                        "name": "clean_up_bytearray_end_slots_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "2742:5:19",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "2749:3:19",
                                "type": ""
                            },
                            {
                                "name": "startIndex",
                                "nodeType": "YulTypedName",
                                "src": "2754:10:19",
                                "type": ""
                            }
                        ],
                        "src": "2687:543:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3299:54:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3309:37:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "bits",
                                                "nodeType": "YulIdentifier",
                                                "src": "3334:4:19"
                                            },
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3340:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3330:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3330:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "newValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "3309:8:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "shift_right_unsigned_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "bits",
                                "nodeType": "YulTypedName",
                                "src": "3274:4:19",
                                "type": ""
                            },
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3280:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "newValue",
                                "nodeType": "YulTypedName",
                                "src": "3290:8:19",
                                "type": ""
                            }
                        ],
                        "src": "3236:117:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3410:118:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3420:68:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3469:1:19",
                                                                "type": "",
                                                                "value": "8"
                                                            },
                                                            {
                                                                "name": "bytes",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3472:5:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "mul",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3465:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3465:13:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3484:1:19",
                                                                "type": "",
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3480:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3480:6:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shift_right_unsigned_dynamic",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3436:28:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3436:51:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "not",
                                            "nodeType": "YulIdentifier",
                                            "src": "3432:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3432:56:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "mask",
                                            "nodeType": "YulTypedName",
                                            "src": "3424:4:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3497:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3511:4:19"
                                            },
                                            {
                                                "name": "mask",
                                                "nodeType": "YulIdentifier",
                                                "src": "3517:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3507:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3507:15:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "3497:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "mask_bytes_dynamic",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "3387:4:19",
                                "type": ""
                            },
                            {
                                "name": "bytes",
                                "nodeType": "YulTypedName",
                                "src": "3393:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "3403:6:19",
                                "type": ""
                            }
                        ],
                        "src": "3359:169:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3614:214:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3747:37:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3774:4:19"
                                            },
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "3780:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mask_bytes_dynamic",
                                            "nodeType": "YulIdentifier",
                                            "src": "3755:18:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3755:29:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "3747:4:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3793:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3804:4:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3814:1:19",
                                                        "type": "",
                                                        "value": "2"
                                                    },
                                                    {
                                                        "name": "len",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3817:3:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "mul",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3810:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3810:11:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "3801:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3801:21:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "used",
                                            "nodeType": "YulIdentifier",
                                            "src": "3793:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "3595:4:19",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "3601:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "used",
                                "nodeType": "YulTypedName",
                                "src": "3609:4:19",
                                "type": ""
                            }
                        ],
                        "src": "3533:295:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3925:1303:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3936:51:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "3983:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_string_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3950:32:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3950:37:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "newLen",
                                            "nodeType": "YulTypedName",
                                            "src": "3940:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4072:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4074:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4074:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4074:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4044:6:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4052:18:19",
                                                "type": "",
                                                "value": "0xffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4041:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4041:30:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4038:56:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4104:52:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "slot",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4150:4:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4144:5:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4144:11:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "extract_byte_array_length",
                                            "nodeType": "YulIdentifier",
                                            "src": "4118:25:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4118:38:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "oldLen",
                                            "nodeType": "YulTypedName",
                                            "src": "4108:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "4249:4:19"
                                            },
                                            {
                                                "name": "oldLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4255:6:19"
                                            },
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4263:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "clean_up_bytearray_end_slots_t_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "4203:45:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4203:67:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4203:67:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4280:18:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4297:1:19",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulTypedName",
                                            "src": "4284:9:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4308:17:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4321:4:19",
                                        "type": "",
                                        "value": "0x20"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "4308:9:19"
                                        }
                                    ]
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "4372:611:19",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4386:37:19",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4405:6:19"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4417:4:19",
                                                                            "type": "",
                                                                            "value": "0x1f"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4413:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4413:9:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "and",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4401:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4401:22:19"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "loopEnd",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4390:7:19",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4437:51:19",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4483:4:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "array_dataslot_t_string_storage",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4451:31:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4451:37:19"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "dstPtr",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4441:6:19",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "4501:10:19",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4510:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "i",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4505:1:19",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4569:163:19",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4594:6:19"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "src",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4612:3:19"
                                                                                            },
                                                                                            {
                                                                                                "name": "srcOffset",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4617:9:19"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4608:3:19"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4608:19:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4602:5:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4602:26:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4587:6:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4587:42:19"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "4587:42:19"
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4646:24:19",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4660:6:19"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4668:1:19",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4656:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4656:14:19"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "dstPtr",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4646:6:19"
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4687:31:19",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "srcOffset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4704:9:19"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4715:2:19",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4700:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4700:18:19"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "srcOffset",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4687:9:19"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4535:1:19"
                                                                },
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4538:7:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4532:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4532:14:19"
                                                        },
                                                        "nodeType": "YulForLoop",
                                                        "post": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4547:21:19",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "4549:17:19",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4558:1:19"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4561:4:19",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4554:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4554:12:19"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4549:1:19"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "pre": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4528:3:19",
                                                            "statements": []
                                                        },
                                                        "src": "4524:208:19"
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "4768:156:19",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulVariableDeclaration",
                                                                    "src": "4786:43:19",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4813:3:19"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4818:9:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4809:3:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4809:19:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4803:5:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4803:26:19"
                                                                    },
                                                                    "variables": [
                                                                        {
                                                                            "name": "lastValue",
                                                                            "nodeType": "YulTypedName",
                                                                            "src": "4790:9:19",
                                                                            "type": ""
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4853:6:19"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "lastValue",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4880:9:19"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "newLen",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4895:6:19"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4903:4:19",
                                                                                                "type": "",
                                                                                                "value": "0x1f"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4891:3:19"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4891:17:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mask_bytes_dynamic",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4861:18:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4861:48:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4846:6:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4846:64:19"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "4846:64:19"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4751:7:19"
                                                                },
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4760:6:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4748:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4748:19:19"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "4745:179:19"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4944:4:19"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "newLen",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4958:6:19"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4966:1:19",
                                                                                    "type": "",
                                                                                    "value": "2"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mul",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4954:3:19"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4954:14:19"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4970:1:19",
                                                                            "type": "",
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4950:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4950:22:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4937:6:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4937:36:19"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "4937:36:19"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "4365:618:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4370:1:19",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "5000:222:19",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "5014:14:19",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5027:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulTypedName",
                                                                "src": "5018:5:19",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5051:67:19",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "5069:35:19",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5088:3:19"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5093:9:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5084:3:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5084:19:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5078:5:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5078:26:19"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5069:5:19"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5044:6:19"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "5041:77:19"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5138:4:19"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5197:5:19"
                                                                        },
                                                                        {
                                                                            "name": "newLen",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5204:6:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5144:52:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "5144:67:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5131:6:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5131:81:19"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "5131:81:19"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "4992:230:19",
                                            "value": "default"
                                        }
                                    ],
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "4345:6:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4353:2:19",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4342:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4342:14:19"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "4335:887:19"
                                }
                            ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "3914:4:19",
                                "type": ""
                            },
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "3920:3:19",
                                "type": ""
                            }
                        ],
                        "src": "3833:1395:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5330:73:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5347:3:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5352:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5340:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5340:19:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5340:19:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5368:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5387:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5392:4:19",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5383:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5383:14:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "updated_pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "5368:11:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "5302:3:19",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "5307:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "updated_pos",
                                "nodeType": "YulTypedName",
                                "src": "5318:11:19",
                                "type": ""
                            }
                        ],
                        "src": "5234:169:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5515:75:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5537:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5545:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5533:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5533:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "5549:33:19",
                                                "type": "",
                                                "value": "ERC20: mint to the zero address"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5526:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5526:57:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5526:57:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "5507:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5409:181:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5742:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5752:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5818:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5823:2:19",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "5759:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5759:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "5752:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5924:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                            "nodeType": "YulIdentifier",
                                            "src": "5835:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5835:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5835:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5937:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5948:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5953:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5944:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5944:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "5937:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "5730:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "5738:3:19",
                                "type": ""
                            }
                        ],
                        "src": "5596:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6139:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6149:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6161:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6172:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6157:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6157:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6149:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6196:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6207:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6192:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6192:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6215:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6221:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6211:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6211:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6185:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6185:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6185:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6241:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "6375:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "6249:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6249:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6241:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6119:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6134:4:19",
                                "type": ""
                            }
                        ],
                        "src": "5968:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6421:152:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6438:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6441:77:19",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6431:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6431:88:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6431:88:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6535:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6538:4:19",
                                                "type": "",
                                                "value": "0x11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6528:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6528:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6528:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6559:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6562:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "6552:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6552:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6552:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6393:180:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6623:147:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6633:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6656:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "6638:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6638:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "6633:1:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6667:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "6690:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "6672:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6672:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "6667:1:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6701:16:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6712:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "6715:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6708:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6708:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "sum",
                                            "nodeType": "YulIdentifier",
                                            "src": "6701:3:19"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6741:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6743:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6743:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6743:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6733:1:19"
                                            },
                                            {
                                                "name": "sum",
                                                "nodeType": "YulIdentifier",
                                                "src": "6736:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6730:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6730:10:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6727:36:19"
                                }
                            ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "6610:1:19",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "6613:1:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "sum",
                                "nodeType": "YulTypedName",
                                "src": "6619:3:19",
                                "type": ""
                            }
                        ],
                        "src": "6579:191:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6841:53:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "6858:3:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6881:5:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6863:17:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6863:24:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6851:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6851:37:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6851:37:19"
                                }
                            ]
                        },
                        "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "6829:5:19",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "6836:3:19",
                                "type": ""
                            }
                        ],
                        "src": "6776:118:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6998:124:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7008:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7020:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7031:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7016:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7016:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7008:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "7088:6:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7101:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7112:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7097:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7097:17:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "7044:43:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7044:71:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7044:71:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6970:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6982:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6993:4:19",
                                "type": ""
                            }
                        ],
                        "src": "6900:222:19"
                    }
                ]
            },
            "contents": "{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function array_dataslot_t_string_storage(ptr) -> data {\n        data := ptr\n\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n\n    }\n\n    function divide_by_32_ceil(value) -> result {\n        result := div(add(value, 31), 32)\n    }\n\n    function shift_left_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shl(bits, value)\n\n    }\n\n    function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n        let shiftBits := mul(shiftBytes, 8)\n        let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        toInsert := shift_left_dynamic(shiftBits, toInsert)\n        value := and(value, not(mask))\n        result := or(value, and(toInsert, mask))\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_uint256_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n    }\n\n    function prepare_store_t_uint256(value) -> ret {\n        ret := value\n    }\n\n    function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n        let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n        sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n    }\n\n    function zero_value_for_split_t_uint256() -> ret {\n        ret := 0\n    }\n\n    function storage_set_to_zero_t_uint256(slot, offset) {\n        let zero_0 := zero_value_for_split_t_uint256()\n        update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n    }\n\n    function clear_storage_range_t_bytes1(start, end) {\n        for {} lt(start, end) { start := add(start, 1) }\n        {\n            storage_set_to_zero_t_uint256(start, 0)\n        }\n    }\n\n    function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n        if gt(len, 31) {\n            let dataArea := array_dataslot_t_string_storage(array)\n            let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n            // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n            if lt(startIndex, 32) { deleteStart := dataArea }\n            clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n        }\n\n    }\n\n    function shift_right_unsigned_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shr(bits, value)\n\n    }\n\n    function mask_bytes_dynamic(data, bytes) -> result {\n        let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n        result := and(data, mask)\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n        // we want to save only elements that are part of the array after resizing\n        // others should be set to zero\n        data := mask_bytes_dynamic(data, len)\n        used := or(data, mul(2, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n        let newLen := array_length_t_string_memory_ptr(src)\n        // Make sure array length is sane\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n        let oldLen := extract_byte_array_length(sload(slot))\n\n        // potentially truncate data\n        clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n        let srcOffset := 0\n\n        srcOffset := 0x20\n\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(0x1f))\n\n            let dstPtr := array_dataslot_t_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 32)\n            }\n            if lt(loopEnd, newLen) {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n            }\n            sstore(slot, add(mul(newLen, 2), 1))\n        }\n        default {\n            let value := 0\n            if newLen {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n    }\n\n    function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        sum := add(x, y)\n\n        if gt(x, sum) { panic_error_0x11() }\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n}\n",
            "id": 19,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "deployedGeneratedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:13699:19",
                "statements": [
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "66:40:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "77:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "93:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "87:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "87:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "77:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "49:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "59:6:19",
                                "type": ""
                            }
                        ],
                        "src": "7:99:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "208:73:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "225:3:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "230:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "218:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "218:19:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "218:19:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "246:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "265:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "270:4:19",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "261:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "261:14:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "updated_pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "246:11:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "180:3:19",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "185:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "updated_pos",
                                "nodeType": "YulTypedName",
                                "src": "196:11:19",
                                "type": ""
                            }
                        ],
                        "src": "112:169:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "349:184:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "359:10:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "368:1:19",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "363:1:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "428:63:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "453:3:19"
                                                                },
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "458:1:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "449:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "449:11:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "src",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "472:3:19"
                                                                        },
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "477:1:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "468:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "468:11:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mload",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "462:5:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "462:18:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "442:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "442:39:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "442:39:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "389:1:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "392:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "386:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "386:13:19"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "400:19:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "402:15:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "411:1:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "414:2:19",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "407:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "407:10:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "402:1:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "382:3:19",
                                        "statements": []
                                    },
                                    "src": "378:113:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "511:3:19"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "516:6:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "507:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "507:16:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "525:1:19",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "500:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "500:27:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "500:27:19"
                                }
                            ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "331:3:19",
                                "type": ""
                            },
                            {
                                "name": "dst",
                                "nodeType": "YulTypedName",
                                "src": "336:3:19",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "341:6:19",
                                "type": ""
                            }
                        ],
                        "src": "287:246:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "587:54:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "597:38:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "615:5:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "622:2:19",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "611:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "611:14:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "631:2:19",
                                                        "type": "",
                                                        "value": "31"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "627:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "627:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "607:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "607:28:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "597:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "round_up_to_mul_of_32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "570:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "580:6:19",
                                "type": ""
                            }
                        ],
                        "src": "539:102:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "739:285:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "749:53:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "796:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_length_t_string_memory_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "763:32:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "763:39:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "753:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "811:78:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "877:3:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "882:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "818:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "818:71:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "811:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "937:5:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "944:4:19",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "933:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "933:16:19"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "951:3:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "956:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "898:34:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "898:65:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "898:65:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "972:46:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "983:3:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1010:6:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "round_up_to_mul_of_32",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "988:21:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "988:29:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "979:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "979:39:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "972:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "720:5:19",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "727:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "735:3:19",
                                "type": ""
                            }
                        ],
                        "src": "647:377:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1148:195:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1158:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1170:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1181:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1166:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1166:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "1158:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1205:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1216:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1201:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1201:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1224:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1230:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1220:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1220:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1194:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1194:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1194:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1250:86:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "1322:6:19"
                                            },
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "1331:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "1258:63:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1258:78:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "1250:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1120:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1132:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "1143:4:19",
                                "type": ""
                            }
                        ],
                        "src": "1030:313:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1389:35:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1399:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1415:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1409:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1409:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1399:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "allocate_unbounded",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "1382:6:19",
                                "type": ""
                            }
                        ],
                        "src": "1349:75:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1519:28:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1536:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1539:1:19",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1529:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1529:12:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1529:12:19"
                                }
                            ]
                        },
                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1430:117:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1642:28:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1659:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1662:1:19",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1652:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1652:12:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1652:12:19"
                                }
                            ]
                        },
                        "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1553:117:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1721:81:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1731:65:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1746:5:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1753:42:19",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "1742:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1742:54:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "1731:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1703:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "1713:7:19",
                                "type": ""
                            }
                        ],
                        "src": "1676:126:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1853:51:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1863:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1892:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint160",
                                            "nodeType": "YulIdentifier",
                                            "src": "1874:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1874:24:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "1863:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1835:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "1845:7:19",
                                "type": ""
                            }
                        ],
                        "src": "1808:96:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1953:79:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2010:16:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2019:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2022:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2012:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2012:12:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2012:12:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1976:5:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2001:5:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_address",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1983:17:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1983:24:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1973:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1973:35:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1966:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1966:43:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1963:63:19"
                                }
                            ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "1946:5:19",
                                "type": ""
                            }
                        ],
                        "src": "1910:122:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2090:87:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2100:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2122:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2109:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2109:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2100:5:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2165:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "2138:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2138:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2138:33:19"
                                }
                            ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2068:6:19",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "2076:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2084:5:19",
                                "type": ""
                            }
                        ],
                        "src": "2038:139:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2228:32:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2238:16:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2249:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "2238:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2210:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "2220:7:19",
                                "type": ""
                            }
                        ],
                        "src": "2183:77:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2309:79:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2366:16:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2375:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2378:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2368:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2368:12:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2368:12:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2332:5:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2357:5:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "cleanup_t_uint256",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2339:17:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2339:24:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2329:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2329:35:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "2322:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2322:43:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2319:63:19"
                                }
                            ]
                        },
                        "name": "validator_revert_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2302:5:19",
                                "type": ""
                            }
                        ],
                        "src": "2266:122:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2446:87:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2456:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2478:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2465:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2465:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2456:5:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2521:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "2494:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2494:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2494:33:19"
                                }
                            ]
                        },
                        "name": "abi_decode_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "2424:6:19",
                                "type": ""
                            },
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "2432:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "2440:5:19",
                                "type": ""
                            }
                        ],
                        "src": "2394:139:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2622:391:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2668:83:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2670:77:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2670:79:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2670:79:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2643:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2652:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2639:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2639:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2664:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2635:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2635:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2632:119:19"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "2761:117:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "2776:15:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2790:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "2780:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "2805:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2840:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2851:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2836:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2836:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2860:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2815:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2815:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2805:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "2888:118:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "2903:16:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2917:2:19",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "2907:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "2933:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2968:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2979:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2964:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2964:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2988:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2943:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2943:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2933:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2584:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "2595:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2607:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "2615:6:19",
                                "type": ""
                            }
                        ],
                        "src": "2539:474:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3061:48:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3071:32:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3096:5:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3089:6:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3089:13:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "3082:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3082:21:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "3071:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3043:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "3053:7:19",
                                "type": ""
                            }
                        ],
                        "src": "3019:90:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3174:50:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3191:3:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3211:5:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_bool",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3196:14:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3196:21:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3184:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3184:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3184:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_t_bool_to_t_bool_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3162:5:19",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "3169:3:19",
                                "type": ""
                            }
                        ],
                        "src": "3115:109:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3322:118:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3332:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3344:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3355:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3340:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3340:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "3332:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "3406:6:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3419:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3430:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3415:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3415:17:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_bool_to_t_bool_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "3368:37:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3368:65:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3368:65:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3294:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3306:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "3317:4:19",
                                "type": ""
                            }
                        ],
                        "src": "3230:210:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3511:53:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3528:3:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3551:5:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3533:17:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3533:24:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3521:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3521:37:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3521:37:19"
                                }
                            ]
                        },
                        "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3499:5:19",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "3506:3:19",
                                "type": ""
                            }
                        ],
                        "src": "3446:118:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3668:124:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3678:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3690:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3701:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3686:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3686:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "3678:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "3758:6:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3771:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3782:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3767:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3767:17:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "3714:43:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3714:71:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3714:71:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3640:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3652:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "3663:4:19",
                                "type": ""
                            }
                        ],
                        "src": "3570:222:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3898:519:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "3944:83:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3946:77:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3946:79:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3946:79:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3919:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3928:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3915:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3915:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3940:2:19",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3911:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3911:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3908:119:19"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "4037:117:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "4052:15:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4066:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "4056:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "4081:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4116:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4127:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4112:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4112:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4136:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4091:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4091:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4081:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "4164:118:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "4179:16:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4193:2:19",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "4183:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "4209:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4244:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4255:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4240:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4240:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4264:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4219:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4219:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4209:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "4292:118:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "4307:16:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4321:2:19",
                                                "type": "",
                                                "value": "64"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "4311:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "4337:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4372:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4383:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4368:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4368:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4392:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_uint256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4347:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4347:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4337:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3852:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "3863:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3875:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "3883:6:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "3891:6:19",
                                "type": ""
                            }
                        ],
                        "src": "3798:619:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4466:43:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4476:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "4491:5:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4498:4:19",
                                                "type": "",
                                                "value": "0xff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4487:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4487:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "cleaned",
                                            "nodeType": "YulIdentifier",
                                            "src": "4476:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "cleanup_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "4448:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "cleaned",
                                "nodeType": "YulTypedName",
                                "src": "4458:7:19",
                                "type": ""
                            }
                        ],
                        "src": "4423:86:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4576:51:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "4593:3:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4614:5:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "cleanup_t_uint8",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4598:15:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4598:22:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4586:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4586:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4586:35:19"
                                }
                            ]
                        },
                        "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "4564:5:19",
                                "type": ""
                            },
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "4571:3:19",
                                "type": ""
                            }
                        ],
                        "src": "4515:112:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4727:120:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4737:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4749:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4760:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4745:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4745:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "4737:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "4813:6:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4826:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4837:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4822:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4822:17:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "4773:39:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4773:67:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4773:67:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4699:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4711:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "4722:4:19",
                                "type": ""
                            }
                        ],
                        "src": "4633:214:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4919:263:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4965:83:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4967:77:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4967:79:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4967:79:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4940:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4949:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4936:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4936:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4961:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4932:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4932:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4929:119:19"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5058:117:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5073:15:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5087:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5077:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5102:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5137:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5148:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5133:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5133:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5157:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5112:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5112:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5102:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4889:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4900:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4912:6:19",
                                "type": ""
                            }
                        ],
                        "src": "4853:329:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5271:391:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5317:83:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5319:77:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5319:79:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5319:79:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5292:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5301:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5288:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5288:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5313:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5284:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5284:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5281:119:19"
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5410:117:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5425:15:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5439:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5429:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5454:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5489:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5500:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5485:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5485:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5509:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5464:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5464:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5454:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulBlock",
                                    "src": "5537:118:19",
                                    "statements": [
                                        {
                                            "nodeType": "YulVariableDeclaration",
                                            "src": "5552:16:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5566:2:19",
                                                "type": "",
                                                "value": "32"
                                            },
                                            "variables": [
                                                {
                                                    "name": "offset",
                                                    "nodeType": "YulTypedName",
                                                    "src": "5556:6:19",
                                                    "type": ""
                                                }
                                            ]
                                        },
                                        {
                                            "nodeType": "YulAssignment",
                                            "src": "5582:63:19",
                                            "value": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5617:9:19"
                                                            },
                                                            {
                                                                "name": "offset",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5628:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5613:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5613:22:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5637:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_t_address",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5592:20:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5592:53:19"
                                            },
                                            "variableNames": [
                                                {
                                                    "name": "value1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5582:6:19"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5233:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5244:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5256:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "5264:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5188:474:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5696:152:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5713:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5716:77:19",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5706:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5706:88:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5706:88:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5810:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5813:4:19",
                                                "type": "",
                                                "value": "0x22"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5803:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5803:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5803:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5834:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5837:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "5827:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5827:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5827:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x22",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5668:180:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5905:269:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5915:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "5929:4:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5935:1:19",
                                                "type": "",
                                                "value": "2"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5925:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5925:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "5915:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5946:38:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "5976:4:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5982:1:19",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5972:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5972:12:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "5950:18:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6023:51:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "6037:27:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6051:6:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6059:4:19",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6047:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6047:17:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6037:6:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "6003:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "5996:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5996:26:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5993:81:19"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6126:42:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x22",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6140:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6140:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6140:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "6090:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6113:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6121:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6110:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6110:14:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "6087:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6087:38:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6084:84:19"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "5889:4:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "5898:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5854:320:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6208:152:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6225:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6228:77:19",
                                                "type": "",
                                                "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6218:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6218:88:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6218:88:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6322:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6325:4:19",
                                                "type": "",
                                                "value": "0x11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6315:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6315:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6315:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6346:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6349:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "6339:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6339:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6339:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6180:180:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6410:147:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6420:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6443:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "6425:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6425:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "6420:1:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6454:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "6477:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "cleanup_t_uint256",
                                            "nodeType": "YulIdentifier",
                                            "src": "6459:17:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6459:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "6454:1:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6488:16:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6499:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "6502:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6495:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6495:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "sum",
                                            "nodeType": "YulIdentifier",
                                            "src": "6488:3:19"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6528:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6530:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6530:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6530:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "6520:1:19"
                                            },
                                            {
                                                "name": "sum",
                                                "nodeType": "YulIdentifier",
                                                "src": "6523:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6517:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6517:10:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6514:36:19"
                                }
                            ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "6397:1:19",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "6400:1:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "sum",
                                "nodeType": "YulTypedName",
                                "src": "6406:3:19",
                                "type": ""
                            }
                        ],
                        "src": "6366:191:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6669:118:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6691:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6699:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6687:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6687:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "6703:34:19",
                                                "type": "",
                                                "value": "ERC20: decreased allowance below"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6680:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6680:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6680:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6759:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6767:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6755:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6755:15:19"
                                            },
                                            {
                                                "hexValue": "207a65726f",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "6772:7:19",
                                                "type": "",
                                                "value": " zero"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6748:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6748:32:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6748:32:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "6661:6:19",
                                "type": ""
                            }
                        ],
                        "src": "6563:224:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6939:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6949:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "7015:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7020:2:19",
                                                "type": "",
                                                "value": "37"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "6956:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6956:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "6949:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "7121:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                            "nodeType": "YulIdentifier",
                                            "src": "7032:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7032:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7032:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7134:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "7145:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7150:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7141:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7141:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "7134:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "6927:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "6935:3:19",
                                "type": ""
                            }
                        ],
                        "src": "6793:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7336:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7346:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7358:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7369:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7354:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7354:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7346:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7393:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7404:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7389:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7389:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7412:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7418:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7408:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7408:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7382:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7382:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7382:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7438:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "7572:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "7446:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7446:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7438:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7316:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7331:4:19",
                                "type": ""
                            }
                        ],
                        "src": "7165:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7696:117:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7718:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7726:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7714:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7714:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7730:34:19",
                                                "type": "",
                                                "value": "ERC20: approve from the zero add"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7707:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7707:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7707:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7786:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7794:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7782:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7782:15:19"
                                            },
                                            {
                                                "hexValue": "72657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7799:6:19",
                                                "type": "",
                                                "value": "ress"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7775:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7775:31:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7775:31:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "7688:6:19",
                                "type": ""
                            }
                        ],
                        "src": "7590:223:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7965:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7975:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "8041:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8046:2:19",
                                                "type": "",
                                                "value": "36"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "7982:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7982:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7975:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "8147:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                            "nodeType": "YulIdentifier",
                                            "src": "8058:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8058:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8058:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8160:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "8171:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8176:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8167:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8167:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "8160:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "7953:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "7961:3:19",
                                "type": ""
                            }
                        ],
                        "src": "7819:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8362:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8372:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8384:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8395:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8380:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8380:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8372:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8419:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8430:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8415:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8415:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8438:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8444:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8434:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8434:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8408:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8408:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8408:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8464:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "8598:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "8472:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8472:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8464:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8342:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8357:4:19",
                                "type": ""
                            }
                        ],
                        "src": "8191:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8722:115:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8744:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8752:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8740:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8740:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8756:34:19",
                                                "type": "",
                                                "value": "ERC20: approve to the zero addre"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8733:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8733:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8733:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8812:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8820:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8808:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8808:15:19"
                                            },
                                            {
                                                "hexValue": "7373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8825:4:19",
                                                "type": "",
                                                "value": "ss"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8801:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8801:29:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8801:29:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "8714:6:19",
                                "type": ""
                            }
                        ],
                        "src": "8616:221:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8989:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8999:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "9065:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9070:2:19",
                                                "type": "",
                                                "value": "34"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "9006:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9006:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "8999:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "9171:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                            "nodeType": "YulIdentifier",
                                            "src": "9082:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9082:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9082:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9184:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "9195:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9200:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9191:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9191:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "9184:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "8977:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "8985:3:19",
                                "type": ""
                            }
                        ],
                        "src": "8843:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9386:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9396:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9408:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9419:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9404:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9404:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9396:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9443:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9454:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9439:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9439:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9462:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9468:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9458:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9458:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9432:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9432:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9432:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9488:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "9622:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "9496:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9496:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9488:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9366:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9381:4:19",
                                "type": ""
                            }
                        ],
                        "src": "9215:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9746:73:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9768:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9776:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9764:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9764:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "9780:31:19",
                                                "type": "",
                                                "value": "ERC20: insufficient allowance"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9757:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9757:55:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9757:55:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "9738:6:19",
                                "type": ""
                            }
                        ],
                        "src": "9640:179:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9971:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9981:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "10047:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10052:2:19",
                                                "type": "",
                                                "value": "29"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "9988:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9988:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "9981:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "10153:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
                                            "nodeType": "YulIdentifier",
                                            "src": "10064:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10064:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10064:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10166:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "10177:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10182:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10173:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10173:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "10166:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "9959:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "9967:3:19",
                                "type": ""
                            }
                        ],
                        "src": "9825:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10368:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10378:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10390:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10401:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10386:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10386:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "10378:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10425:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10436:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10421:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10421:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10444:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10450:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10440:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10440:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10414:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10414:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10414:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10470:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "10604:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "10478:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10478:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "10470:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "10348:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "10363:4:19",
                                "type": ""
                            }
                        ],
                        "src": "10197:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10728:118:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10750:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10758:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10746:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10746:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "10762:34:19",
                                                "type": "",
                                                "value": "ERC20: transfer from the zero ad"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10739:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10739:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10739:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10818:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10826:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10814:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10814:15:19"
                                            },
                                            {
                                                "hexValue": "6472657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "10831:7:19",
                                                "type": "",
                                                "value": "dress"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10807:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10807:32:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10807:32:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "10720:6:19",
                                "type": ""
                            }
                        ],
                        "src": "10622:224:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10998:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11008:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11074:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11079:2:19",
                                                "type": "",
                                                "value": "37"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "11015:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11015:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "11008:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11180:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                            "nodeType": "YulIdentifier",
                                            "src": "11091:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11091:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11091:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11193:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "11204:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11209:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11200:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11200:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "11193:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "10986:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "10994:3:19",
                                "type": ""
                            }
                        ],
                        "src": "10852:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11395:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11405:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11417:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11428:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11413:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11413:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11405:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11452:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11463:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11448:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11448:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11471:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11477:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11467:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11467:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11441:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11441:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11441:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11497:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "11631:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "11505:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11505:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11497:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11375:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "11390:4:19",
                                "type": ""
                            }
                        ],
                        "src": "11224:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11755:116:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11777:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11785:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11773:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11773:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "11789:34:19",
                                                "type": "",
                                                "value": "ERC20: transfer to the zero addr"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11766:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11766:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11766:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11845:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11853:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11841:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11841:15:19"
                                            },
                                            {
                                                "hexValue": "657373",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "11858:5:19",
                                                "type": "",
                                                "value": "ess"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11834:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11834:30:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11834:30:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "11747:6:19",
                                "type": ""
                            }
                        ],
                        "src": "11649:222:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12023:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12033:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12099:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12104:2:19",
                                                "type": "",
                                                "value": "35"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "12040:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12040:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "12033:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12205:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                            "nodeType": "YulIdentifier",
                                            "src": "12116:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12116:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12116:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12218:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "12229:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12234:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12225:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12225:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "12218:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "12011:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "12019:3:19",
                                "type": ""
                            }
                        ],
                        "src": "11877:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12420:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12430:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "12442:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12453:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12438:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12438:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "12430:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12477:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12488:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12473:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12473:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12496:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12502:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12492:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12492:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12466:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12466:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12466:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12522:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "12656:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "12530:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12530:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "12522:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "12400:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "12415:4:19",
                                "type": ""
                            }
                        ],
                        "src": "12249:419:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12780:119:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12802:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12810:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12798:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12798:14:19"
                                            },
                                            {
                                                "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "12814:34:19",
                                                "type": "",
                                                "value": "ERC20: transfer amount exceeds b"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12791:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12791:58:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12791:58:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12870:6:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12878:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12866:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12866:15:19"
                                            },
                                            {
                                                "hexValue": "616c616e6365",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "12883:8:19",
                                                "type": "",
                                                "value": "alance"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12859:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12859:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12859:33:19"
                                }
                            ]
                        },
                        "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "12772:6:19",
                                "type": ""
                            }
                        ],
                        "src": "12674:225:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13051:220:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13061:74:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13127:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13132:2:19",
                                                "type": "",
                                                "value": "38"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "13068:58:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13068:67:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "13061:3:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13233:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                            "nodeType": "YulIdentifier",
                                            "src": "13144:88:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13144:93:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13144:93:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13246:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13257:3:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13262:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13253:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13253:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "13246:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "13039:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "13047:3:19",
                                "type": ""
                            }
                        ],
                        "src": "12905:366:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13448:248:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13458:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13470:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13481:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13466:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13466:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13458:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13505:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13516:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13501:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13501:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13524:4:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13530:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13520:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13520:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13494:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13494:47:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13494:47:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13550:139:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "tail",
                                                "nodeType": "YulIdentifier",
                                                "src": "13684:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
                                            "nodeType": "YulIdentifier",
                                            "src": "13558:124:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13558:131:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13550:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13428:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13443:4:19",
                                "type": ""
                            }
                        ],
                        "src": "13277:419:19"
                    }
                ]
            },
            "contents": "{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\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\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint8_to_t_uint8_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        sum := add(x, y)\n\n        if gt(x, sum) { panic_error_0x11() }\n\n    }\n\n    function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n        mstore(add(memPtr, 32), \" zero\")\n\n    }\n\n    function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n        store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n        mstore(add(memPtr, 32), \"ress\")\n\n    }\n\n    function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n        store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n        mstore(add(memPtr, 32), \"ss\")\n\n    }\n\n    function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n        store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: insufficient allowance\")\n\n    }\n\n    function abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n        store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n        mstore(add(memPtr, 32), \"dress\")\n\n    }\n\n    function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n        store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n        mstore(add(memPtr, 32), \"ess\")\n\n    }\n\n    function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n        store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n        mstore(add(memPtr, 32), \"alance\")\n\n    }\n\n    function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n}\n",
            "id": 19,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "sourceMap": "192:197:0:-:0;;;287:100;;;;;;;;;;1976:113:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:5;2042;:13;;;;;;:::i;:::-;;2075:7;2065;:17;;;;;;:::i;:::-;;1976:113;;346:34:0::1;352:10;262:18;346:5;;;:34;;:::i;:::-;192:197:::0;;8567:535:6;8669:1;8650:21;;:7;:21;;;8642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:49;8747:1;8751:7;8760:6;8718:20;;;:49;;:::i;:::-;8794:6;8778:12;;:22;;;;;;;:::i;:::-;;;;;;;;8968:6;8946:9;:18;8956:7;8946:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9020:7;8999:37;;9016:1;8999:37;;;9029:6;8999:37;;;;;;:::i;:::-;;;;;;;;9047:48;9075:1;9079:7;9088:6;9047:19;;;:48;;:::i;:::-;8567:535;;:::o;12180:121::-;;;;:::o;12889:120::-;;;;:::o;7:99:19:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;5234:169::-;5318:11;5352:6;5347:3;5340:19;5392:4;5387:3;5383:14;5368:29;;5234:169;;;;:::o;5409:181::-;5549:33;5545:1;5537:6;5533:14;5526:57;5409:181;:::o;5596:366::-;5738:3;5759:67;5823:2;5818:3;5759:67;:::i;:::-;5752:74;;5835:93;5924:3;5835:93;:::i;:::-;5953:2;5948:3;5944:12;5937:19;;5596:366;;;:::o;5968:419::-;6134:4;6172:2;6161:9;6157:18;6149:26;;6221:9;6215:4;6211:20;6207:1;6196:9;6192:17;6185:47;6249:131;6375:4;6249:131;:::i;:::-;6241:139;;5968:419;;;:::o;6393:180::-;6441:77;6438:1;6431:88;6538:4;6535:1;6528:15;6562:4;6559:1;6552:15;6579:191;6619:3;6638:20;6656:1;6638:20;:::i;:::-;6633:25;;6672:20;6690:1;6672:20;:::i;:::-;6667:25;;6715:1;6712;6708:9;6701:16;;6736:3;6733:1;6730:10;6727:36;;;6743:18;;:::i;:::-;6727:36;6579:191;;;;:::o;6776:118::-;6863:24;6881:5;6863:24;:::i;:::-;6858:3;6851:37;6776:118;;:::o;6900:222::-;6993:4;7031:2;7020:9;7016:18;7008:26;;7044:71;7112:1;7101:9;7097:17;7088:6;7044:71;:::i;:::-;6900:222;;;;:::o;192:197:0:-;;;;;;;",
    "deployedSourceMap": "192:197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3406:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2365:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6592:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2154:98;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;3406:125::-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;6592:427::-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3727:189::-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;3974:149::-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;640:96:14:-;693:7;719:10;712:17;;640:96;:::o;10504:370:6:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;12180:121::-;;;;:::o;12889:120::-;;;;:::o;7:99:19:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:474::-;5256:6;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:180::-;5716:77;5713:1;5706:88;5813:4;5810:1;5803:15;5837:4;5834:1;5827:15;5854:320;5898:6;5935:1;5929:4;5925:12;5915:22;;5982:1;5976:4;5972:12;6003:18;5993:81;;6059:4;6051:6;6047:17;6037:27;;5993:81;6121:2;6113:6;6110:14;6090:18;6087:38;6084:84;;6140:18;;:::i;:::-;6084:84;5905:269;5854:320;;;:::o;6180:180::-;6228:77;6225:1;6218:88;6325:4;6322:1;6315:15;6349:4;6346:1;6339:15;6366:191;6406:3;6425:20;6443:1;6425:20;:::i;:::-;6420:25;;6459:20;6477:1;6459:20;:::i;:::-;6454:25;;6502:1;6499;6495:9;6488:16;;6523:3;6520:1;6517:10;6514:36;;;6530:18;;:::i;:::-;6514:36;6366:191;;;;:::o;6563:224::-;6703:34;6699:1;6691:6;6687:14;6680:58;6772:7;6767:2;6759:6;6755:15;6748:32;6563:224;:::o;6793:366::-;6935:3;6956:67;7020:2;7015:3;6956:67;:::i;:::-;6949:74;;7032:93;7121:3;7032:93;:::i;:::-;7150:2;7145:3;7141:12;7134:19;;6793:366;;;:::o;7165:419::-;7331:4;7369:2;7358:9;7354:18;7346:26;;7418:9;7412:4;7408:20;7404:1;7393:9;7389:17;7382:47;7446:131;7572:4;7446:131;:::i;:::-;7438:139;;7165:419;;;:::o;7590:223::-;7730:34;7726:1;7718:6;7714:14;7707:58;7799:6;7794:2;7786:6;7782:15;7775:31;7590:223;:::o;7819:366::-;7961:3;7982:67;8046:2;8041:3;7982:67;:::i;:::-;7975:74;;8058:93;8147:3;8058:93;:::i;:::-;8176:2;8171:3;8167:12;8160:19;;7819:366;;;:::o;8191:419::-;8357:4;8395:2;8384:9;8380:18;8372:26;;8444:9;8438:4;8434:20;8430:1;8419:9;8415:17;8408:47;8472:131;8598:4;8472:131;:::i;:::-;8464:139;;8191:419;;;:::o;8616:221::-;8756:34;8752:1;8744:6;8740:14;8733:58;8825:4;8820:2;8812:6;8808:15;8801:29;8616:221;:::o;8843:366::-;8985:3;9006:67;9070:2;9065:3;9006:67;:::i;:::-;8999:74;;9082:93;9171:3;9082:93;:::i;:::-;9200:2;9195:3;9191:12;9184:19;;8843:366;;;:::o;9215:419::-;9381:4;9419:2;9408:9;9404:18;9396:26;;9468:9;9462:4;9458:20;9454:1;9443:9;9439:17;9432:47;9496:131;9622:4;9496:131;:::i;:::-;9488:139;;9215:419;;;:::o;9640:179::-;9780:31;9776:1;9768:6;9764:14;9757:55;9640:179;:::o;9825:366::-;9967:3;9988:67;10052:2;10047:3;9988:67;:::i;:::-;9981:74;;10064:93;10153:3;10064:93;:::i;:::-;10182:2;10177:3;10173:12;10166:19;;9825:366;;;:::o;10197:419::-;10363:4;10401:2;10390:9;10386:18;10378:26;;10450:9;10444:4;10440:20;10436:1;10425:9;10421:17;10414:47;10478:131;10604:4;10478:131;:::i;:::-;10470:139;;10197:419;;;:::o;10622:224::-;10762:34;10758:1;10750:6;10746:14;10739:58;10831:7;10826:2;10818:6;10814:15;10807:32;10622:224;:::o;10852:366::-;10994:3;11015:67;11079:2;11074:3;11015:67;:::i;:::-;11008:74;;11091:93;11180:3;11091:93;:::i;:::-;11209:2;11204:3;11200:12;11193:19;;10852:366;;;:::o;11224:419::-;11390:4;11428:2;11417:9;11413:18;11405:26;;11477:9;11471:4;11467:20;11463:1;11452:9;11448:17;11441:47;11505:131;11631:4;11505:131;:::i;:::-;11497:139;;11224:419;;;:::o;11649:222::-;11789:34;11785:1;11777:6;11773:14;11766:58;11858:5;11853:2;11845:6;11841:15;11834:30;11649:222;:::o;11877:366::-;12019:3;12040:67;12104:2;12099:3;12040:67;:::i;:::-;12033:74;;12116:93;12205:3;12116:93;:::i;:::-;12234:2;12229:3;12225:12;12218:19;;11877:366;;;:::o;12249:419::-;12415:4;12453:2;12442:9;12438:18;12430:26;;12502:9;12496:4;12492:20;12488:1;12477:9;12473:17;12466:47;12530:131;12656:4;12530:131;:::i;:::-;12522:139;;12249:419;;;:::o;12674:225::-;12814:34;12810:1;12802:6;12798:14;12791:58;12883:8;12878:2;12870:6;12866:15;12859:33;12674:225;:::o;12905:366::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:419::-;13443:4;13481:2;13470:9;13466:18;13458:26;;13530:9;13524:4;13520:20;13516:1;13505:9;13501:17;13494:47;13558:131;13684:4;13558:131;:::i;:::-;13550:139;;13277:419;;;:::o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n/**\n * A basic token for testing the HashedTimelockERC20.\n */\ncontract AliceERC20 is ERC20 {\n    uint256 constant _initial_supply = 1000000 * (10**18);\n\n    constructor() ERC20(\"Alice Token\", \"AliceToken\") {\n        _mint(msg.sender, _initial_supply);\n    }\n}\n",
    "sourcePath": "/Users/matsukawatoshiya/programs/solidity/ether-atomic/contracts/AliceERC20.sol",
    "ast": {
        "absolutePath": "project:/contracts/AliceERC20.sol",
        "exportedSymbols": {
            "AliceERC20": [28],
            "Context": [3324],
            "ERC20": [1763],
            "IERC20": [1841],
            "IERC20Metadata": [1866]
        },
        "id": 29,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1,
                "literals": ["solidity", "^", "0.8", ".0"],
                "nodeType": "PragmaDirective",
                "src": "32:23:0"
            },
            {
                "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 2,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 29,
                "sourceUnit": 1764,
                "src": "57:71:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 4,
                            "name": "ERC20",
                            "nameLocations": ["215:5:0"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 1763,
                            "src": "215:5:0"
                        },
                        "id": 5,
                        "nodeType": "InheritanceSpecifier",
                        "src": "215:5:0"
                    }
                ],
                "canonicalName": "AliceERC20",
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "130:61:0",
                    "text": " A basic token for testing the HashedTimelockERC20."
                },
                "fullyImplemented": true,
                "id": 28,
                "linearizedBaseContracts": [28, 1763, 1866, 1841, 3324],
                "name": "AliceERC20",
                "nameLocation": "201:10:0",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": true,
                        "id": 13,
                        "mutability": "constant",
                        "name": "_initial_supply",
                        "nameLocation": "244:15:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 28,
                        "src": "227:53:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 6,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "227:7:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000000000"
                            },
                            "id": 12,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                                "hexValue": "31303030303030",
                                "id": 7,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "262:7:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                },
                                "value": "1000000"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                                "components": [
                                    {
                                        "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        },
                                        "id": 10,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 8,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "273:2:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                            "hexValue": "3138",
                                            "id": 9,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "277:2:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                        },
                                        "src": "273:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        }
                                    }
                                ],
                                "id": 11,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "272:8:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                }
                            },
                            "src": "262:18:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000000000"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 26,
                            "nodeType": "Block",
                            "src": "336:51:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 21,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "352:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 22,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "356:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "352:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 23,
                                                "name": "_initial_supply",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13,
                                                "src": "364:15:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 20,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1580,
                                            "src": "346:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 24,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "346:34:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 25,
                                    "nodeType": "ExpressionStatement",
                                    "src": "346:34:0"
                                }
                            ]
                        },
                        "id": 27,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "hexValue": "416c69636520546f6b656e",
                                        "id": 16,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "307:13:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_26693cf356b62c1243a719dd41fbad1f8bb90abd123ee8a32232f2aa3fe61381",
                                            "typeString": "literal_string \"Alice Token\""
                                        },
                                        "value": "Alice Token"
                                    },
                                    {
                                        "hexValue": "416c696365546f6b656e",
                                        "id": 17,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "322:12:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_b3698bcf07cb50d557f39dd444bb5f4f4718b3629d45fd9e22eab604d6edeca8",
                                            "typeString": "literal_string \"AliceToken\""
                                        },
                                        "value": "AliceToken"
                                    }
                                ],
                                "id": 18,
                                "kind": "baseConstructorSpecifier",
                                "modifierName": {
                                    "id": 15,
                                    "name": "ERC20",
                                    "nameLocations": ["301:5:0"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1763,
                                    "src": "301:5:0"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "301:34:0"
                            }
                        ],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 14,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "298:2:0"
                        },
                        "returnParameters": {
                            "id": 19,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "336:0:0"
                        },
                        "scope": 28,
                        "src": "287:100:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 29,
                "src": "192:197:0",
                "usedErrors": []
            }
        ],
        "src": "32:358:0"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
    },
    "networks": {
        "11155111": {
            "events": {
                "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "name": "Approval",
                    "type": "event"
                },
                "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "from",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "name": "Transfer",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0xDeBaF5D396C6C49334b49428eb1c8853FaDaAB0e",
            "transactionHash": "0x964c7b5c32baf95b81c676dc3261d7e150b7282fb6ee78faedff0b597558d2ba"
        }
    },
    "schemaVersion": "3.4.11",
    "updatedAt": "2022-12-18T07:47:01.815Z",
    "networkType": "ethereum",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
            },
            "approve(address,uint256)": {
                "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
            },
            "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
            },
            "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
            },
            "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
            },
            "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
            },
            "name()": {
                "details": "Returns the name of the token."
            },
            "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
            },
            "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
            },
            "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
            },
            "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "notice": "A basic token for testing the HashedTimelockERC20.",
        "version": 1
    }
}
