{
  "contractName": "WETH9",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Withdrawal",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "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": [],
      "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
    },
    {
      "stateMutability": "payable",
      "type": "receive",
      "payable": true
    },
    {
      "inputs": [],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function",
      "payable": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/weth9.sol\":\"WETH9\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/weth9.sol\":{\"keccak256\":\"0x2660fbb22e1816c30966a4e2faf10702c1509b546a1061b8394804d72466e2ee\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://ddb51c7e014f464e38ff4c52d38b3fb78d502e2c623323e0d7b841da698224de\",\"dweb:/ipfs/QmQ1YDd9zL98GmZKRkd3wRzvcRAhJHbhzurxwnmAUNmo1D\"]}},\"version\":1}",
  "bytecode": "[encoded data, 4788 characters]",
  "deployedBytecode": "0x60806040526004361061009d575f3560e01c8063313ce56711610062578063313ce5671461016357806370a082311461018e57806395d89b41146101b9578063a9059cbb146101cd578063d0e30db0146101ec578063dd62ed3e146101f4575f5ffd5b806306fdde03146100b0578063095ea7b3146100da57806318160ddd1461010957806323b872dd146101255780632e1a7d4d14610144575f5ffd5b366100ac576100aa61022a565b005b5f5ffd5b3480156100bb575f5ffd5b506100c4610284565b6040516100d191906105b6565b60405180910390f35b3480156100e5575f5ffd5b506100f96100f436600461061c565b61030f565b60405190151581526020016100d1565b348015610114575f5ffd5b50475b6040519081526020016100d1565b348015610130575f5ffd5b506100f961013f366004610644565b61037b565b34801561014f575f5ffd5b506100aa61015e36600461067e565b6104f6565b34801561016e575f5ffd5b5060025461017c9060ff1681565b60405160ff90911681526020016100d1565b348015610199575f5ffd5b506101176101a8366004610695565b60036020525f908152604090205481565b3480156101c4575f5ffd5b506100c4610596565b3480156101d8575f5ffd5b506100f96101e736600461061c565b6105a3565b6100aa61022a565b3480156101ff575f5ffd5b5061011761020e3660046106ae565b600460209081525f928352604080842090915290825290205481565b335f90815260036020526040812080543492906102489084906106f3565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b5f805461029090610706565b80601f01602080910402602001604051908101604052809291908181526020018280546102bc90610706565b80156103075780601f106102de57610100808354040283529160200191610307565b820191905f5260205f20905b8154815290600101906020018083116102ea57829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103699086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526003602052604081205482111561039e575f5ffd5b6001600160a01b03841633148015906103da57506001600160a01b0384165f9081526004602090815260408083203384529091529020545f1914155b15610445576001600160a01b0384165f90815260046020908152604080832033845290915290205482111561040d575f5ffd5b6001600160a01b0384165f9081526004602090815260408083203384529091528120805484929061043f90849061073e565b90915550505b6001600160a01b0384165f908152600360205260408120805484929061046c90849061073e565b90915550506001600160a01b0383165f90815260036020526040812080548492906104989084906106f3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104e491815260200190565b60405180910390a35060019392505050565b335f90815260036020526040902054811115610510575f5ffd5b335f908152600360205260408120805483929061052e90849061073e565b9091555050604051339082156108fc029083905f818181858888f1935050505015801561055d573d5f5f3e3d5ffd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b6001805461029090610706565b5f6105af33848461037b565b9392505050565b602081525f82518060208401525f5b818110156105e257602081860181015160408684010152016105c5565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610617575f5ffd5b919050565b5f5f6040838503121561062d575f5ffd5b61063683610601565b946020939093013593505050565b5f5f5f60608486031215610656575f5ffd5b61065f84610601565b925061066d60208501610601565b929592945050506040919091013590565b5f6020828403121561068e575f5ffd5b5035919050565b5f602082840312156106a5575f5ffd5b6105af82610601565b5f5f604083850312156106bf575f5ffd5b6106c883610601565b91506106d660208401610601565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610375576103756106df565b600181811c9082168061071a57607f821691505b60208210810361073857634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115610375576103756106df56fea264697066735822122007ab0fa4780b52663bb8ac470230e816a336513045366de804093423b285840964736f6c634300081c0033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nativeSrc": "0:2652:1",
        "nodeType": "YulBlock",
        "src": "0:2652:1",
        "statements": [
          {
            "nativeSrc": "6:3:1",
            "nodeType": "YulBlock",
            "src": "6:3:1",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "46:95:1",
              "nodeType": "YulBlock",
              "src": "46:95:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "63:1:1",
                        "nodeType": "YulLiteral",
                        "src": "63:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "70:3:1",
                            "nodeType": "YulLiteral",
                            "src": "70:3:1",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "75:10:1",
                            "nodeType": "YulLiteral",
                            "src": "75:10:1",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "66:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "66:3:1"
                        },
                        "nativeSrc": "66:20:1",
                        "nodeType": "YulFunctionCall",
                        "src": "66:20:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "56:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "56:6:1"
                    },
                    "nativeSrc": "56:31:1",
                    "nodeType": "YulFunctionCall",
                    "src": "56:31:1"
                  },
                  "nativeSrc": "56:31:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "56:31:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "103:1:1",
                        "nodeType": "YulLiteral",
                        "src": "103:1:1",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "106:4:1",
                        "nodeType": "YulLiteral",
                        "src": "106:4:1",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "96:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "96:6:1"
                    },
                    "nativeSrc": "96:15:1",
                    "nodeType": "YulFunctionCall",
                    "src": "96:15:1"
                  },
                  "nativeSrc": "96:15:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "96:15:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "127:1:1",
                        "nodeType": "YulLiteral",
                        "src": "127:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "130:4:1",
                        "nodeType": "YulLiteral",
                        "src": "130:4:1",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "120:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "120:6:1"
                    },
                    "nativeSrc": "120:15:1",
                    "nodeType": "YulFunctionCall",
                    "src": "120:15:1"
                  },
                  "nativeSrc": "120:15:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "120:15:1"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "14:127:1",
            "nodeType": "YulFunctionDefinition",
            "src": "14:127:1"
          },
          {
            "body": {
              "nativeSrc": "201:325:1",
              "nodeType": "YulBlock",
              "src": "201:325:1",
              "statements": [
                {
                  "nativeSrc": "211:22:1",
                  "nodeType": "YulAssignment",
                  "src": "211:22:1",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "225:1:1",
                        "nodeType": "YulLiteral",
                        "src": "225:1:1",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "228:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "228:4:1"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "221:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "221:3:1"
                    },
                    "nativeSrc": "221:12:1",
                    "nodeType": "YulFunctionCall",
                    "src": "221:12:1"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "211:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "211:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "242:38:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "242:38:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "272:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "272:4:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "278:1:1",
                        "nodeType": "YulLiteral",
                        "src": "278:1:1",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "268:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "268:3:1"
                    },
                    "nativeSrc": "268:12:1",
                    "nodeType": "YulFunctionCall",
                    "src": "268:12:1"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "246:18:1",
                      "nodeType": "YulTypedName",
                      "src": "246:18:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "319:31:1",
                    "nodeType": "YulBlock",
                    "src": "319:31:1",
                    "statements": [
                      {
                        "nativeSrc": "321:27:1",
                        "nodeType": "YulAssignment",
                        "src": "321:27:1",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "335:6:1",
                              "nodeType": "YulIdentifier",
                              "src": "335:6:1"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "343:4:1",
                              "nodeType": "YulLiteral",
                              "src": "343:4:1",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "331:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "331:3:1"
                          },
                          "nativeSrc": "331:17:1",
                          "nodeType": "YulFunctionCall",
                          "src": "331:17:1"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "321:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "321:6:1"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "299:18:1",
                        "nodeType": "YulIdentifier",
                        "src": "299:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "292:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "292:6:1"
                    },
                    "nativeSrc": "292:26:1",
                    "nodeType": "YulFunctionCall",
                    "src": "292:26:1"
                  },
                  "nativeSrc": "289:61:1",
                  "nodeType": "YulIf",
                  "src": "289:61:1"
                },
                {
                  "body": {
                    "nativeSrc": "409:111:1",
                    "nodeType": "YulBlock",
                    "src": "409:111:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "430:1:1",
                              "nodeType": "YulLiteral",
                              "src": "430:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "437:3:1",
                                  "nodeType": "YulLiteral",
                                  "src": "437:3:1",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "442:10:1",
                                  "nodeType": "YulLiteral",
                                  "src": "442:10:1",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "433:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "433:3:1"
                              },
                              "nativeSrc": "433:20:1",
                              "nodeType": "YulFunctionCall",
                              "src": "433:20:1"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "423:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "423:6:1"
                          },
                          "nativeSrc": "423:31:1",
                          "nodeType": "YulFunctionCall",
                          "src": "423:31:1"
                        },
                        "nativeSrc": "423:31:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "423:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "474:1:1",
                              "nodeType": "YulLiteral",
                              "src": "474:1:1",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "477:4:1",
                              "nodeType": "YulLiteral",
                              "src": "477:4:1",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "467:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "467:6:1"
                          },
                          "nativeSrc": "467:15:1",
                          "nodeType": "YulFunctionCall",
                          "src": "467:15:1"
                        },
                        "nativeSrc": "467:15:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "467:15:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "502:1:1",
                              "nodeType": "YulLiteral",
                              "src": "502:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "505:4:1",
                              "nodeType": "YulLiteral",
                              "src": "505:4:1",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "495:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "495:6:1"
                          },
                          "nativeSrc": "495:15:1",
                          "nodeType": "YulFunctionCall",
                          "src": "495:15:1"
                        },
                        "nativeSrc": "495:15:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "495:15:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "365:18:1",
                        "nodeType": "YulIdentifier",
                        "src": "365:18:1"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "388:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "388:6:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "396:2:1",
                            "nodeType": "YulLiteral",
                            "src": "396:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "385:2:1",
                          "nodeType": "YulIdentifier",
                          "src": "385:2:1"
                        },
                        "nativeSrc": "385:14:1",
                        "nodeType": "YulFunctionCall",
                        "src": "385:14:1"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "362:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "362:2:1"
                    },
                    "nativeSrc": "362:38:1",
                    "nodeType": "YulFunctionCall",
                    "src": "362:38:1"
                  },
                  "nativeSrc": "359:161:1",
                  "nodeType": "YulIf",
                  "src": "359:161:1"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "146:380:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "181:4:1",
                "nodeType": "YulTypedName",
                "src": "181:4:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "190:6:1",
                "nodeType": "YulTypedName",
                "src": "190:6:1",
                "type": ""
              }
            ],
            "src": "146:380:1"
          },
          {
            "body": {
              "nativeSrc": "587:65:1",
              "nodeType": "YulBlock",
              "src": "587:65:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "604:1:1",
                        "nodeType": "YulLiteral",
                        "src": "604:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nativeSrc": "607:3:1",
                        "nodeType": "YulIdentifier",
                        "src": "607:3:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "597:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "597:6:1"
                    },
                    "nativeSrc": "597:14:1",
                    "nodeType": "YulFunctionCall",
                    "src": "597:14:1"
                  },
                  "nativeSrc": "597:14:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "597:14:1"
                },
                {
                  "nativeSrc": "620:26:1",
                  "nodeType": "YulAssignment",
                  "src": "620:26:1",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "638:1:1",
                        "nodeType": "YulLiteral",
                        "src": "638:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "641:4:1",
                        "nodeType": "YulLiteral",
                        "src": "641:4:1",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nativeSrc": "628:9:1",
                      "nodeType": "YulIdentifier",
                      "src": "628:9:1"
                    },
                    "nativeSrc": "628:18:1",
                    "nodeType": "YulFunctionCall",
                    "src": "628:18:1"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nativeSrc": "620:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "620:4:1"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nativeSrc": "531:121:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "570:3:1",
                "nodeType": "YulTypedName",
                "src": "570:3:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nativeSrc": "578:4:1",
                "nodeType": "YulTypedName",
                "src": "578:4:1",
                "type": ""
              }
            ],
            "src": "531:121:1"
          },
          {
            "body": {
              "nativeSrc": "738:437:1",
              "nodeType": "YulBlock",
              "src": "738:437:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "771:398:1",
                    "nodeType": "YulBlock",
                    "src": "771:398:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "792:1:1",
                              "nodeType": "YulLiteral",
                              "src": "792:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "array",
                              "nativeSrc": "795:5:1",
                              "nodeType": "YulIdentifier",
                              "src": "795:5:1"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "785:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "785:6:1"
                          },
                          "nativeSrc": "785:16:1",
                          "nodeType": "YulFunctionCall",
                          "src": "785:16:1"
                        },
                        "nativeSrc": "785:16:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "785:16:1"
                      },
                      {
                        "nativeSrc": "814:30:1",
                        "nodeType": "YulVariableDeclaration",
                        "src": "814:30:1",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "836:1:1",
                              "nodeType": "YulLiteral",
                              "src": "836:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "839:4:1",
                              "nodeType": "YulLiteral",
                              "src": "839:4:1",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "826:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "826:9:1"
                          },
                          "nativeSrc": "826:18:1",
                          "nodeType": "YulFunctionCall",
                          "src": "826:18:1"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nativeSrc": "818:4:1",
                            "nodeType": "YulTypedName",
                            "src": "818:4:1",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "857:57:1",
                        "nodeType": "YulVariableDeclaration",
                        "src": "857:57:1",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "880:4:1",
                              "nodeType": "YulIdentifier",
                              "src": "880:4:1"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "890:1:1",
                                  "nodeType": "YulLiteral",
                                  "src": "890:1:1",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nativeSrc": "897:10:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "897:10:1"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "909:2:1",
                                      "nodeType": "YulLiteral",
                                      "src": "909:2:1",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "893:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "893:3:1"
                                  },
                                  "nativeSrc": "893:19:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "893:19:1"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "886:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "886:3:1"
                              },
                              "nativeSrc": "886:27:1",
                              "nodeType": "YulFunctionCall",
                              "src": "886:27:1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "876:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "876:3:1"
                          },
                          "nativeSrc": "876:38:1",
                          "nodeType": "YulFunctionCall",
                          "src": "876:38:1"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nativeSrc": "861:11:1",
                            "nodeType": "YulTypedName",
                            "src": "861:11:1",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "951:23:1",
                          "nodeType": "YulBlock",
                          "src": "951:23:1",
                          "statements": [
                            {
                              "nativeSrc": "953:19:1",
                              "nodeType": "YulAssignment",
                              "src": "953:19:1",
                              "value": {
                                "name": "data",
                                "nativeSrc": "968:4:1",
                                "nodeType": "YulIdentifier",
                                "src": "968:4:1"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nativeSrc": "953:11:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "953:11:1"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nativeSrc": "933:10:1",
                              "nodeType": "YulIdentifier",
                              "src": "933:10:1"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "945:4:1",
                              "nodeType": "YulLiteral",
                              "src": "945:4:1",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "930:2:1",
                            "nodeType": "YulIdentifier",
                            "src": "930:2:1"
                          },
                          "nativeSrc": "930:20:1",
                          "nodeType": "YulFunctionCall",
                          "src": "930:20:1"
                        },
                        "nativeSrc": "927:47:1",
                        "nodeType": "YulIf",
                        "src": "927:47:1"
                      },
                      {
                        "nativeSrc": "987:41:1",
                        "nodeType": "YulVariableDeclaration",
                        "src": "987:41:1",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "1001:4:1",
                              "nodeType": "YulIdentifier",
                              "src": "1001:4:1"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "1011:1:1",
                                  "nodeType": "YulLiteral",
                                  "src": "1011:1:1",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nativeSrc": "1018:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1018:3:1"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "1023:2:1",
                                      "nodeType": "YulLiteral",
                                      "src": "1023:2:1",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "1014:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1014:3:1"
                                  },
                                  "nativeSrc": "1014:12:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "1014:12:1"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "1007:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "1007:3:1"
                              },
                              "nativeSrc": "1007:20:1",
                              "nodeType": "YulFunctionCall",
                              "src": "1007:20:1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "997:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "997:3:1"
                          },
                          "nativeSrc": "997:31:1",
                          "nodeType": "YulFunctionCall",
                          "src": "997:31:1"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nativeSrc": "991:2:1",
                            "nodeType": "YulTypedName",
                            "src": "991:2:1",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "1041:24:1",
                        "nodeType": "YulVariableDeclaration",
                        "src": "1041:24:1",
                        "value": {
                          "name": "deleteStart",
                          "nativeSrc": "1054:11:1",
                          "nodeType": "YulIdentifier",
                          "src": "1054:11:1"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nativeSrc": "1045:5:1",
                            "nodeType": "YulTypedName",
                            "src": "1045:5:1",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "1139:20:1",
                          "nodeType": "YulBlock",
                          "src": "1139:20:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "1148:5:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1148:5:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1155:1:1",
                                    "nodeType": "YulLiteral",
                                    "src": "1155:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "1141:6:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1141:6:1"
                                },
                                "nativeSrc": "1141:16:1",
                                "nodeType": "YulFunctionCall",
                                "src": "1141:16:1"
                              },
                              "nativeSrc": "1141:16:1",
                              "nodeType": "YulExpressionStatement",
                              "src": "1141:16:1"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nativeSrc": "1089:5:1",
                              "nodeType": "YulIdentifier",
                              "src": "1089:5:1"
                            },
                            {
                              "name": "_1",
                              "nativeSrc": "1096:2:1",
                              "nodeType": "YulIdentifier",
                              "src": "1096:2:1"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "1086:2:1",
                            "nodeType": "YulIdentifier",
                            "src": "1086:2:1"
                          },
                          "nativeSrc": "1086:13:1",
                          "nodeType": "YulFunctionCall",
                          "src": "1086:13:1"
                        },
                        "nativeSrc": "1078:81:1",
                        "nodeType": "YulForLoop",
                        "post": {
                          "nativeSrc": "1100:26:1",
                          "nodeType": "YulBlock",
                          "src": "1100:26:1",
                          "statements": [
                            {
                              "nativeSrc": "1102:22:1",
                              "nodeType": "YulAssignment",
                              "src": "1102:22:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "1115:5:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1115:5:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1122:1:1",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "1111:3:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1111:3:1"
                                },
                                "nativeSrc": "1111:13:1",
                                "nodeType": "YulFunctionCall",
                                "src": "1111:13:1"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nativeSrc": "1102:5:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1102:5:1"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nativeSrc": "1082:3:1",
                          "nodeType": "YulBlock",
                          "src": "1082:3:1",
                          "statements": []
                        },
                        "src": "1078:81:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "754:3:1",
                        "nodeType": "YulIdentifier",
                        "src": "754:3:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "759:2:1",
                        "nodeType": "YulLiteral",
                        "src": "759:2:1",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "751:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "751:2:1"
                    },
                    "nativeSrc": "751:11:1",
                    "nodeType": "YulFunctionCall",
                    "src": "751:11:1"
                  },
                  "nativeSrc": "748:421:1",
                  "nodeType": "YulIf",
                  "src": "748:421:1"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nativeSrc": "657:518:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "710:5:1",
                "nodeType": "YulTypedName",
                "src": "710:5:1",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "717:3:1",
                "nodeType": "YulTypedName",
                "src": "717:3:1",
                "type": ""
              },
              {
                "name": "startIndex",
                "nativeSrc": "722:10:1",
                "nodeType": "YulTypedName",
                "src": "722:10:1",
                "type": ""
              }
            ],
            "src": "657:518:1"
          },
          {
            "body": {
              "nativeSrc": "1265:81:1",
              "nodeType": "YulBlock",
              "src": "1265:81:1",
              "statements": [
                {
                  "nativeSrc": "1275:65:1",
                  "nodeType": "YulAssignment",
                  "src": "1275:65:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nativeSrc": "1290:4:1",
                            "nodeType": "YulIdentifier",
                            "src": "1290:4:1"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1308:1:1",
                                        "nodeType": "YulLiteral",
                                        "src": "1308:1:1",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "1311:3:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1311:3:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "1304:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1304:3:1"
                                    },
                                    "nativeSrc": "1304:11:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1304:11:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1321:1:1",
                                        "nodeType": "YulLiteral",
                                        "src": "1321:1:1",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "1317:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1317:3:1"
                                    },
                                    "nativeSrc": "1317:6:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1317:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "1300:3:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1300:3:1"
                                },
                                "nativeSrc": "1300:24:1",
                                "nodeType": "YulFunctionCall",
                                "src": "1300:24:1"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "1296:3:1",
                              "nodeType": "YulIdentifier",
                              "src": "1296:3:1"
                            },
                            "nativeSrc": "1296:29:1",
                            "nodeType": "YulFunctionCall",
                            "src": "1296:29:1"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1286:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1286:3:1"
                        },
                        "nativeSrc": "1286:40:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1286:40:1"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "1332:1:1",
                            "nodeType": "YulLiteral",
                            "src": "1332:1:1",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nativeSrc": "1335:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "1335:3:1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "1328:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1328:3:1"
                        },
                        "nativeSrc": "1328:11:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1328:11:1"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "1283:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "1283:2:1"
                    },
                    "nativeSrc": "1283:57:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1283:57:1"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nativeSrc": "1275:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "1275:4:1"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nativeSrc": "1180:166:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "1242:4:1",
                "nodeType": "YulTypedName",
                "src": "1242:4:1",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "1248:3:1",
                "nodeType": "YulTypedName",
                "src": "1248:3:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nativeSrc": "1256:4:1",
                "nodeType": "YulTypedName",
                "src": "1256:4:1",
                "type": ""
              }
            ],
            "src": "1180:166:1"
          },
          {
            "body": {
              "nativeSrc": "1447:1203:1",
              "nodeType": "YulBlock",
              "src": "1447:1203:1",
              "statements": [
                {
                  "nativeSrc": "1457:24:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1457:24:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nativeSrc": "1477:3:1",
                        "nodeType": "YulIdentifier",
                        "src": "1477:3:1"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "1471:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "1471:5:1"
                    },
                    "nativeSrc": "1471:10:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1471:10:1"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nativeSrc": "1461:6:1",
                      "nodeType": "YulTypedName",
                      "src": "1461:6:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1524:22:1",
                    "nodeType": "YulBlock",
                    "src": "1524:22:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "1526:16:1",
                            "nodeType": "YulIdentifier",
                            "src": "1526:16:1"
                          },
                          "nativeSrc": "1526:18:1",
                          "nodeType": "YulFunctionCall",
                          "src": "1526:18:1"
                        },
                        "nativeSrc": "1526:18:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "1526:18:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "1496:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "1496:6:1"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1512:2:1",
                                "nodeType": "YulLiteral",
                                "src": "1512:2:1",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1516:1:1",
                                "nodeType": "YulLiteral",
                                "src": "1516:1:1",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "1508:3:1",
                              "nodeType": "YulIdentifier",
                              "src": "1508:3:1"
                            },
                            "nativeSrc": "1508:10:1",
                            "nodeType": "YulFunctionCall",
                            "src": "1508:10:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1520:1:1",
                            "nodeType": "YulLiteral",
                            "src": "1520:1:1",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1504:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1504:3:1"
                        },
                        "nativeSrc": "1504:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1504:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1493:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "1493:2:1"
                    },
                    "nativeSrc": "1493:30:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1493:30:1"
                  },
                  "nativeSrc": "1490:56:1",
                  "nodeType": "YulIf",
                  "src": "1490:56:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "1599:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "1599:4:1"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "1637:4:1",
                                "nodeType": "YulIdentifier",
                                "src": "1637:4:1"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "1631:5:1",
                              "nodeType": "YulIdentifier",
                              "src": "1631:5:1"
                            },
                            "nativeSrc": "1631:11:1",
                            "nodeType": "YulFunctionCall",
                            "src": "1631:11:1"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "1605:25:1",
                          "nodeType": "YulIdentifier",
                          "src": "1605:25:1"
                        },
                        "nativeSrc": "1605:38:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1605:38:1"
                      },
                      {
                        "name": "newLen",
                        "nativeSrc": "1645:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "1645:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "1555:43:1",
                      "nodeType": "YulIdentifier",
                      "src": "1555:43:1"
                    },
                    "nativeSrc": "1555:97:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1555:97:1"
                  },
                  "nativeSrc": "1555:97:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "1555:97:1"
                },
                {
                  "nativeSrc": "1661:18:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1661:18:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1678:1:1",
                    "nodeType": "YulLiteral",
                    "src": "1678:1:1",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "1665:9:1",
                      "nodeType": "YulTypedName",
                      "src": "1665:9:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1688:17:1",
                  "nodeType": "YulAssignment",
                  "src": "1688:17:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1701:4:1",
                    "nodeType": "YulLiteral",
                    "src": "1701:4:1",
                    "type": "",
                    "value": "0x20"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "1688:9:1",
                      "nodeType": "YulIdentifier",
                      "src": "1688:9:1"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "1751:642:1",
                        "nodeType": "YulBlock",
                        "src": "1751:642:1",
                        "statements": [
                          {
                            "nativeSrc": "1765:35:1",
                            "nodeType": "YulVariableDeclaration",
                            "src": "1765:35:1",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nativeSrc": "1784:6:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1784:6:1"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "1796:2:1",
                                      "nodeType": "YulLiteral",
                                      "src": "1796:2:1",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "1792:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1792:3:1"
                                  },
                                  "nativeSrc": "1792:7:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "1792:7:1"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "1780:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "1780:3:1"
                              },
                              "nativeSrc": "1780:20:1",
                              "nodeType": "YulFunctionCall",
                              "src": "1780:20:1"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "1769:7:1",
                                "nodeType": "YulTypedName",
                                "src": "1769:7:1",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "1813:49:1",
                            "nodeType": "YulVariableDeclaration",
                            "src": "1813:49:1",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "1857:4:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1857:4:1"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "1827:29:1",
                                "nodeType": "YulIdentifier",
                                "src": "1827:29:1"
                              },
                              "nativeSrc": "1827:35:1",
                              "nodeType": "YulFunctionCall",
                              "src": "1827:35:1"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "1817:6:1",
                                "nodeType": "YulTypedName",
                                "src": "1817:6:1",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "1875:10:1",
                            "nodeType": "YulVariableDeclaration",
                            "src": "1875:10:1",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "1884:1:1",
                              "nodeType": "YulLiteral",
                              "src": "1884:1:1",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "1879:1:1",
                                "nodeType": "YulTypedName",
                                "src": "1879:1:1",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "1955:165:1",
                              "nodeType": "YulBlock",
                              "src": "1955:165:1",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "1980:6:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1980:6:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "1998:3:1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1998:3:1"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "2003:9:1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2003:9:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "1994:3:1",
                                              "nodeType": "YulIdentifier",
                                              "src": "1994:3:1"
                                            },
                                            "nativeSrc": "1994:19:1",
                                            "nodeType": "YulFunctionCall",
                                            "src": "1994:19:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "1988:5:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1988:5:1"
                                        },
                                        "nativeSrc": "1988:26:1",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1988:26:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "1973:6:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1973:6:1"
                                    },
                                    "nativeSrc": "1973:42:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1973:42:1"
                                  },
                                  "nativeSrc": "1973:42:1",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "1973:42:1"
                                },
                                {
                                  "nativeSrc": "2032:24:1",
                                  "nodeType": "YulAssignment",
                                  "src": "2032:24:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "2046:6:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2046:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2054:1:1",
                                        "nodeType": "YulLiteral",
                                        "src": "2054:1:1",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2042:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2042:3:1"
                                    },
                                    "nativeSrc": "2042:14:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2042:14:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "2032:6:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2032:6:1"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "2073:33:1",
                                  "nodeType": "YulAssignment",
                                  "src": "2073:33:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "2090:9:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2090:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2101:4:1",
                                        "nodeType": "YulLiteral",
                                        "src": "2101:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2086:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2086:3:1"
                                    },
                                    "nativeSrc": "2086:20:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2086:20:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "2073:9:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2073:9:1"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "1909:1:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1909:1:1"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "1912:7:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:7:1"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "1906:2:1",
                                "nodeType": "YulIdentifier",
                                "src": "1906:2:1"
                              },
                              "nativeSrc": "1906:14:1",
                              "nodeType": "YulFunctionCall",
                              "src": "1906:14:1"
                            },
                            "nativeSrc": "1898:222:1",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "1921:21:1",
                              "nodeType": "YulBlock",
                              "src": "1921:21:1",
                              "statements": [
                                {
                                  "nativeSrc": "1923:17:1",
                                  "nodeType": "YulAssignment",
                                  "src": "1923:17:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "1932:1:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:1:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1935:4:1",
                                        "nodeType": "YulLiteral",
                                        "src": "1935:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1928:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1928:3:1"
                                    },
                                    "nativeSrc": "1928:12:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1928:12:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "1923:1:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1923:1:1"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "1902:3:1",
                              "nodeType": "YulBlock",
                              "src": "1902:3:1",
                              "statements": []
                            },
                            "src": "1898:222:1"
                          },
                          {
                            "body": {
                              "nativeSrc": "2168:166:1",
                              "nodeType": "YulBlock",
                              "src": "2168:166:1",
                              "statements": [
                                {
                                  "nativeSrc": "2186:43:1",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "2186:43:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "2213:3:1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2213:3:1"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "2218:9:1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2218:9:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "2209:3:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2209:3:1"
                                        },
                                        "nativeSrc": "2209:19:1",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2209:19:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "2203:5:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2203:5:1"
                                    },
                                    "nativeSrc": "2203:26:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2203:26:1"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nativeSrc": "2190:9:1",
                                      "nodeType": "YulTypedName",
                                      "src": "2190:9:1",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "2253:6:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2253:6:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nativeSrc": "2265:9:1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2265:9:1"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "2292:1:1",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2292:1:1",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nativeSrc": "2295:6:1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2295:6:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "2288:3:1",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2288:3:1"
                                                        },
                                                        "nativeSrc": "2288:14:1",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2288:14:1"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "2304:3:1",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2304:3:1",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "2284:3:1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2284:3:1"
                                                    },
                                                    "nativeSrc": "2284:24:1",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2284:24:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "2314:1:1",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2314:1:1",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "2310:3:1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2310:3:1"
                                                    },
                                                    "nativeSrc": "2310:6:1",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2310:6:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "2280:3:1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2280:3:1"
                                                },
                                                "nativeSrc": "2280:37:1",
                                                "nodeType": "YulFunctionCall",
                                                "src": "2280:37:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "2276:3:1",
                                              "nodeType": "YulIdentifier",
                                              "src": "2276:3:1"
                                            },
                                            "nativeSrc": "2276:42:1",
                                            "nodeType": "YulFunctionCall",
                                            "src": "2276:42:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "2261:3:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2261:3:1"
                                        },
                                        "nativeSrc": "2261:58:1",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2261:58:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "2246:6:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2246:6:1"
                                    },
                                    "nativeSrc": "2246:74:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2246:74:1"
                                  },
                                  "nativeSrc": "2246:74:1",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "2246:74:1"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "2139:7:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:7:1"
                                },
                                {
                                  "name": "newLen",
                                  "nativeSrc": "2148:6:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2148:6:1"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "2136:2:1",
                                "nodeType": "YulIdentifier",
                                "src": "2136:2:1"
                              },
                              "nativeSrc": "2136:19:1",
                              "nodeType": "YulFunctionCall",
                              "src": "2136:19:1"
                            },
                            "nativeSrc": "2133:201:1",
                            "nodeType": "YulIf",
                            "src": "2133:201:1"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "2354:4:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2354:4:1"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2368:1:1",
                                          "nodeType": "YulLiteral",
                                          "src": "2368:1:1",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nativeSrc": "2371:6:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2371:6:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "2364:3:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2364:3:1"
                                      },
                                      "nativeSrc": "2364:14:1",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2364:14:1"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "2380:1:1",
                                      "nodeType": "YulLiteral",
                                      "src": "2380:1:1",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2360:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2360:3:1"
                                  },
                                  "nativeSrc": "2360:22:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2360:22:1"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "2347:6:1",
                                "nodeType": "YulIdentifier",
                                "src": "2347:6:1"
                              },
                              "nativeSrc": "2347:36:1",
                              "nodeType": "YulFunctionCall",
                              "src": "2347:36:1"
                            },
                            "nativeSrc": "2347:36:1",
                            "nodeType": "YulExpressionStatement",
                            "src": "2347:36:1"
                          }
                        ]
                      },
                      "nativeSrc": "1744:649:1",
                      "nodeType": "YulCase",
                      "src": "1744:649:1",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "1749:1:1",
                        "nodeType": "YulLiteral",
                        "src": "1749:1:1",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "2410:234:1",
                        "nodeType": "YulBlock",
                        "src": "2410:234:1",
                        "statements": [
                          {
                            "nativeSrc": "2424:14:1",
                            "nodeType": "YulVariableDeclaration",
                            "src": "2424:14:1",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "2437:1:1",
                              "nodeType": "YulLiteral",
                              "src": "2437:1:1",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "2428:5:1",
                                "nodeType": "YulTypedName",
                                "src": "2428:5:1",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "2473:67:1",
                              "nodeType": "YulBlock",
                              "src": "2473:67:1",
                              "statements": [
                                {
                                  "nativeSrc": "2491:35:1",
                                  "nodeType": "YulAssignment",
                                  "src": "2491:35:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "2510:3:1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2510:3:1"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "2515:9:1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2515:9:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "2506:3:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2506:3:1"
                                        },
                                        "nativeSrc": "2506:19:1",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2506:19:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "2500:5:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2500:5:1"
                                    },
                                    "nativeSrc": "2500:26:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2500:26:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "2491:5:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2491:5:1"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nativeSrc": "2454:6:1",
                              "nodeType": "YulIdentifier",
                              "src": "2454:6:1"
                            },
                            "nativeSrc": "2451:89:1",
                            "nodeType": "YulIf",
                            "src": "2451:89:1"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "2560:4:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2560:4:1"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "2619:5:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2619:5:1"
                                    },
                                    {
                                      "name": "newLen",
                                      "nativeSrc": "2626:6:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2626:6:1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "2566:52:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2566:52:1"
                                  },
                                  "nativeSrc": "2566:67:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2566:67:1"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "2553:6:1",
                                "nodeType": "YulIdentifier",
                                "src": "2553:6:1"
                              },
                              "nativeSrc": "2553:81:1",
                              "nodeType": "YulFunctionCall",
                              "src": "2553:81:1"
                            },
                            "nativeSrc": "2553:81:1",
                            "nodeType": "YulExpressionStatement",
                            "src": "2553:81:1"
                          }
                        ]
                      },
                      "nativeSrc": "2402:242:1",
                      "nodeType": "YulCase",
                      "src": "2402:242:1",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "1724:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "1724:6:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1732:2:1",
                        "nodeType": "YulLiteral",
                        "src": "1732:2:1",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1721:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "1721:2:1"
                    },
                    "nativeSrc": "1721:14:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1721:14:1"
                  },
                  "nativeSrc": "1714:930:1",
                  "nodeType": "YulSwitch",
                  "src": "1714:930:1"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nativeSrc": "1351:1299:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "1432:4:1",
                "nodeType": "YulTypedName",
                "src": "1432:4:1",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "1438:3:1",
                "nodeType": "YulTypedName",
                "src": "1438:3:1",
                "type": ""
              }
            ],
            "src": "1351:1299:1"
          }
        ]
      },
      "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\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}",
      "id": 1,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:3435:1",
        "nodeType": "YulBlock",
        "src": "0:3435:1",
        "statements": [
          {
            "nativeSrc": "6:3:1",
            "nodeType": "YulBlock",
            "src": "6:3:1",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "135:406:1",
              "nodeType": "YulBlock",
              "src": "135:406:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "152:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "152:9:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "163:2:1",
                        "nodeType": "YulLiteral",
                        "src": "163:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "145:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "145:6:1"
                    },
                    "nativeSrc": "145:21:1",
                    "nodeType": "YulFunctionCall",
                    "src": "145:21:1"
                  },
                  "nativeSrc": "145:21:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "145:21:1"
                },
                {
                  "nativeSrc": "175:27:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "175:27:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "195:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "195:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "189:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "189:5:1"
                    },
                    "nativeSrc": "189:13:1",
                    "nodeType": "YulFunctionCall",
                    "src": "189:13:1"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "179:6:1",
                      "nodeType": "YulTypedName",
                      "src": "179:6:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "222:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "222:9:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "233:2:1",
                            "nodeType": "YulLiteral",
                            "src": "233:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "218:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "218:3:1"
                        },
                        "nativeSrc": "218:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "218:18:1"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "238:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "238:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "211:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "211:6:1"
                    },
                    "nativeSrc": "211:34:1",
                    "nodeType": "YulFunctionCall",
                    "src": "211:34:1"
                  },
                  "nativeSrc": "211:34:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "211:34:1"
                },
                {
                  "nativeSrc": "254:10:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "254:10:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "263:1:1",
                    "nodeType": "YulLiteral",
                    "src": "263:1:1",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "258:1:1",
                      "nodeType": "YulTypedName",
                      "src": "258:1:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "323:90:1",
                    "nodeType": "YulBlock",
                    "src": "323:90:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nativeSrc": "352:9:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "352:9:1"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "363:1:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "363:1:1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "348:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "348:3:1"
                                  },
                                  "nativeSrc": "348:17:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "348:17:1"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "367:2:1",
                                  "nodeType": "YulLiteral",
                                  "src": "367:2:1",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "344:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "344:3:1"
                              },
                              "nativeSrc": "344:26:1",
                              "nodeType": "YulFunctionCall",
                              "src": "344:26:1"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nativeSrc": "386:6:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "386:6:1"
                                        },
                                        {
                                          "name": "i",
                                          "nativeSrc": "394:1:1",
                                          "nodeType": "YulIdentifier",
                                          "src": "394:1:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "382:3:1",
                                        "nodeType": "YulIdentifier",
                                        "src": "382:3:1"
                                      },
                                      "nativeSrc": "382:14:1",
                                      "nodeType": "YulFunctionCall",
                                      "src": "382:14:1"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "398:2:1",
                                      "nodeType": "YulLiteral",
                                      "src": "398:2:1",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "378:3:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "378:3:1"
                                  },
                                  "nativeSrc": "378:23:1",
                                  "nodeType": "YulFunctionCall",
                                  "src": "378:23:1"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "372:5:1",
                                "nodeType": "YulIdentifier",
                                "src": "372:5:1"
                              },
                              "nativeSrc": "372:30:1",
                              "nodeType": "YulFunctionCall",
                              "src": "372:30:1"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "337:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "337:6:1"
                          },
                          "nativeSrc": "337:66:1",
                          "nodeType": "YulFunctionCall",
                          "src": "337:66:1"
                        },
                        "nativeSrc": "337:66:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "337:66:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "284:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "284:1:1"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "287:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "287:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "281:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "281:2:1"
                    },
                    "nativeSrc": "281:13:1",
                    "nodeType": "YulFunctionCall",
                    "src": "281:13:1"
                  },
                  "nativeSrc": "273:140:1",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "295:19:1",
                    "nodeType": "YulBlock",
                    "src": "295:19:1",
                    "statements": [
                      {
                        "nativeSrc": "297:15:1",
                        "nodeType": "YulAssignment",
                        "src": "297:15:1",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "306:1:1",
                              "nodeType": "YulIdentifier",
                              "src": "306:1:1"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "309:2:1",
                              "nodeType": "YulLiteral",
                              "src": "309:2:1",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "302:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "302:3:1"
                          },
                          "nativeSrc": "302:10:1",
                          "nodeType": "YulFunctionCall",
                          "src": "302:10:1"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "297:1:1",
                            "nodeType": "YulIdentifier",
                            "src": "297:1:1"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "277:3:1",
                    "nodeType": "YulBlock",
                    "src": "277:3:1",
                    "statements": []
                  },
                  "src": "273:140:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nativeSrc": "437:9:1",
                                "nodeType": "YulIdentifier",
                                "src": "437:9:1"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "448:6:1",
                                "nodeType": "YulIdentifier",
                                "src": "448:6:1"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "433:3:1",
                              "nodeType": "YulIdentifier",
                              "src": "433:3:1"
                            },
                            "nativeSrc": "433:22:1",
                            "nodeType": "YulFunctionCall",
                            "src": "433:22:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "457:2:1",
                            "nodeType": "YulLiteral",
                            "src": "457:2:1",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "429:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "429:3:1"
                        },
                        "nativeSrc": "429:31:1",
                        "nodeType": "YulFunctionCall",
                        "src": "429:31:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "462:1:1",
                        "nodeType": "YulLiteral",
                        "src": "462:1:1",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "422:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "422:6:1"
                    },
                    "nativeSrc": "422:42:1",
                    "nodeType": "YulFunctionCall",
                    "src": "422:42:1"
                  },
                  "nativeSrc": "422:42:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "422:42:1"
                },
                {
                  "nativeSrc": "473:62:1",
                  "nodeType": "YulAssignment",
                  "src": "473:62:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "489:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "489:9:1"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "508:6:1",
                                    "nodeType": "YulIdentifier",
                                    "src": "508:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "516:2:1",
                                    "nodeType": "YulLiteral",
                                    "src": "516:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "504:3:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "504:3:1"
                                },
                                "nativeSrc": "504:15:1",
                                "nodeType": "YulFunctionCall",
                                "src": "504:15:1"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "525:2:1",
                                    "nodeType": "YulLiteral",
                                    "src": "525:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "521:3:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "521:3:1"
                                },
                                "nativeSrc": "521:7:1",
                                "nodeType": "YulFunctionCall",
                                "src": "521:7:1"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "500:3:1",
                              "nodeType": "YulIdentifier",
                              "src": "500:3:1"
                            },
                            "nativeSrc": "500:29:1",
                            "nodeType": "YulFunctionCall",
                            "src": "500:29:1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "485:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "485:3:1"
                        },
                        "nativeSrc": "485:45:1",
                        "nodeType": "YulFunctionCall",
                        "src": "485:45:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "532:2:1",
                        "nodeType": "YulLiteral",
                        "src": "532:2:1",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "481:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "481:3:1"
                    },
                    "nativeSrc": "481:54:1",
                    "nodeType": "YulFunctionCall",
                    "src": "481:54:1"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "473:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "473:4:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "14:527:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "104:9:1",
                "nodeType": "YulTypedName",
                "src": "104:9:1",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "115:6:1",
                "nodeType": "YulTypedName",
                "src": "115:6:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "126:4:1",
                "nodeType": "YulTypedName",
                "src": "126:4:1",
                "type": ""
              }
            ],
            "src": "14:527:1"
          },
          {
            "body": {
              "nativeSrc": "595:124:1",
              "nodeType": "YulBlock",
              "src": "595:124:1",
              "statements": [
                {
                  "nativeSrc": "605:29:1",
                  "nodeType": "YulAssignment",
                  "src": "605:29:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "627:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "627:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "614:12:1",
                      "nodeType": "YulIdentifier",
                      "src": "614:12:1"
                    },
                    "nativeSrc": "614:20:1",
                    "nodeType": "YulFunctionCall",
                    "src": "614:20:1"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "605:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "605:5:1"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "697:16:1",
                    "nodeType": "YulBlock",
                    "src": "697:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "706:1:1",
                              "nodeType": "YulLiteral",
                              "src": "706:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "709:1:1",
                              "nodeType": "YulLiteral",
                              "src": "709:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "699:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "699:6:1"
                          },
                          "nativeSrc": "699:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "699:12:1"
                        },
                        "nativeSrc": "699:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "699:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "656:5:1",
                            "nodeType": "YulIdentifier",
                            "src": "656:5:1"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "667:5:1",
                                "nodeType": "YulIdentifier",
                                "src": "667:5:1"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "682:3:1",
                                        "nodeType": "YulLiteral",
                                        "src": "682:3:1",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "687:1:1",
                                        "nodeType": "YulLiteral",
                                        "src": "687:1:1",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "678:3:1",
                                      "nodeType": "YulIdentifier",
                                      "src": "678:3:1"
                                    },
                                    "nativeSrc": "678:11:1",
                                    "nodeType": "YulFunctionCall",
                                    "src": "678:11:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "691:1:1",
                                    "nodeType": "YulLiteral",
                                    "src": "691:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "674:3:1",
                                  "nodeType": "YulIdentifier",
                                  "src": "674:3:1"
                                },
                                "nativeSrc": "674:19:1",
                                "nodeType": "YulFunctionCall",
                                "src": "674:19:1"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "663:3:1",
                              "nodeType": "YulIdentifier",
                              "src": "663:3:1"
                            },
                            "nativeSrc": "663:31:1",
                            "nodeType": "YulFunctionCall",
                            "src": "663:31:1"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "653:2:1",
                          "nodeType": "YulIdentifier",
                          "src": "653:2:1"
                        },
                        "nativeSrc": "653:42:1",
                        "nodeType": "YulFunctionCall",
                        "src": "653:42:1"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "646:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "646:6:1"
                    },
                    "nativeSrc": "646:50:1",
                    "nodeType": "YulFunctionCall",
                    "src": "646:50:1"
                  },
                  "nativeSrc": "643:70:1",
                  "nodeType": "YulIf",
                  "src": "643:70:1"
                }
              ]
            },
            "name": "abi_decode_address",
            "nativeSrc": "546:173:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "574:6:1",
                "nodeType": "YulTypedName",
                "src": "574:6:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "585:5:1",
                "nodeType": "YulTypedName",
                "src": "585:5:1",
                "type": ""
              }
            ],
            "src": "546:173:1"
          },
          {
            "body": {
              "nativeSrc": "811:213:1",
              "nodeType": "YulBlock",
              "src": "811:213:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "857:16:1",
                    "nodeType": "YulBlock",
                    "src": "857:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "866:1:1",
                              "nodeType": "YulLiteral",
                              "src": "866:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "869:1:1",
                              "nodeType": "YulLiteral",
                              "src": "869:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "859:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "859:6:1"
                          },
                          "nativeSrc": "859:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "859:12:1"
                        },
                        "nativeSrc": "859:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "859:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "832:7:1",
                            "nodeType": "YulIdentifier",
                            "src": "832:7:1"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "841:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "841:9:1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "828:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "828:3:1"
                        },
                        "nativeSrc": "828:23:1",
                        "nodeType": "YulFunctionCall",
                        "src": "828:23:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "853:2:1",
                        "nodeType": "YulLiteral",
                        "src": "853:2:1",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "824:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "824:3:1"
                    },
                    "nativeSrc": "824:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "824:32:1"
                  },
                  "nativeSrc": "821:52:1",
                  "nodeType": "YulIf",
                  "src": "821:52:1"
                },
                {
                  "nativeSrc": "882:39:1",
                  "nodeType": "YulAssignment",
                  "src": "882:39:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "911:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "911:9:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "892:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "892:18:1"
                    },
                    "nativeSrc": "892:29:1",
                    "nodeType": "YulFunctionCall",
                    "src": "892:29:1"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "882:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "882:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "930:14:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "930:14:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "943:1:1",
                    "nodeType": "YulLiteral",
                    "src": "943:1:1",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "934:5:1",
                      "nodeType": "YulTypedName",
                      "src": "934:5:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "953:41:1",
                  "nodeType": "YulAssignment",
                  "src": "953:41:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "979:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "979:9:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "990:2:1",
                            "nodeType": "YulLiteral",
                            "src": "990:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "975:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "975:3:1"
                        },
                        "nativeSrc": "975:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "975:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "962:12:1",
                      "nodeType": "YulIdentifier",
                      "src": "962:12:1"
                    },
                    "nativeSrc": "962:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "962:32:1"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "953:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "953:5:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "1003:15:1",
                  "nodeType": "YulAssignment",
                  "src": "1003:15:1",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1013:5:1",
                    "nodeType": "YulIdentifier",
                    "src": "1013:5:1"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1003:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1003:6:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nativeSrc": "724:300:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "769:9:1",
                "nodeType": "YulTypedName",
                "src": "769:9:1",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "780:7:1",
                "nodeType": "YulTypedName",
                "src": "780:7:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "792:6:1",
                "nodeType": "YulTypedName",
                "src": "792:6:1",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "800:6:1",
                "nodeType": "YulTypedName",
                "src": "800:6:1",
                "type": ""
              }
            ],
            "src": "724:300:1"
          },
          {
            "body": {
              "nativeSrc": "1124:92:1",
              "nodeType": "YulBlock",
              "src": "1124:92:1",
              "statements": [
                {
                  "nativeSrc": "1134:26:1",
                  "nodeType": "YulAssignment",
                  "src": "1134:26:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1146:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1146:9:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1157:2:1",
                        "nodeType": "YulLiteral",
                        "src": "1157:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1142:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "1142:3:1"
                    },
                    "nativeSrc": "1142:18:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1142:18:1"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1134:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "1134:4:1"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1176:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1176:9:1"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "1201:6:1",
                                "nodeType": "YulIdentifier",
                                "src": "1201:6:1"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "1194:6:1",
                              "nodeType": "YulIdentifier",
                              "src": "1194:6:1"
                            },
                            "nativeSrc": "1194:14:1",
                            "nodeType": "YulFunctionCall",
                            "src": "1194:14:1"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "1187:6:1",
                          "nodeType": "YulIdentifier",
                          "src": "1187:6:1"
                        },
                        "nativeSrc": "1187:22:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1187:22:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1169:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1169:6:1"
                    },
                    "nativeSrc": "1169:41:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1169:41:1"
                  },
                  "nativeSrc": "1169:41:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "1169:41:1"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nativeSrc": "1029:187:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1093:9:1",
                "nodeType": "YulTypedName",
                "src": "1093:9:1",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1104:6:1",
                "nodeType": "YulTypedName",
                "src": "1104:6:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1115:4:1",
                "nodeType": "YulTypedName",
                "src": "1115:4:1",
                "type": ""
              }
            ],
            "src": "1029:187:1"
          },
          {
            "body": {
              "nativeSrc": "1322:76:1",
              "nodeType": "YulBlock",
              "src": "1322:76:1",
              "statements": [
                {
                  "nativeSrc": "1332:26:1",
                  "nodeType": "YulAssignment",
                  "src": "1332:26:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1344:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1344:9:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1355:2:1",
                        "nodeType": "YulLiteral",
                        "src": "1355:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1340:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "1340:3:1"
                    },
                    "nativeSrc": "1340:18:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1340:18:1"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1332:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "1332:4:1"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1374:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1374:9:1"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "1385:6:1",
                        "nodeType": "YulIdentifier",
                        "src": "1385:6:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1367:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1367:6:1"
                    },
                    "nativeSrc": "1367:25:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1367:25:1"
                  },
                  "nativeSrc": "1367:25:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "1367:25:1"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nativeSrc": "1221:177:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1291:9:1",
                "nodeType": "YulTypedName",
                "src": "1291:9:1",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1302:6:1",
                "nodeType": "YulTypedName",
                "src": "1302:6:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1313:4:1",
                "nodeType": "YulTypedName",
                "src": "1313:4:1",
                "type": ""
              }
            ],
            "src": "1221:177:1"
          },
          {
            "body": {
              "nativeSrc": "1507:270:1",
              "nodeType": "YulBlock",
              "src": "1507:270:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1553:16:1",
                    "nodeType": "YulBlock",
                    "src": "1553:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1562:1:1",
                              "nodeType": "YulLiteral",
                              "src": "1562:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1565:1:1",
                              "nodeType": "YulLiteral",
                              "src": "1565:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1555:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "1555:6:1"
                          },
                          "nativeSrc": "1555:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "1555:12:1"
                        },
                        "nativeSrc": "1555:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "1555:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1528:7:1",
                            "nodeType": "YulIdentifier",
                            "src": "1528:7:1"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1537:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "1537:9:1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1524:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1524:3:1"
                        },
                        "nativeSrc": "1524:23:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1524:23:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1549:2:1",
                        "nodeType": "YulLiteral",
                        "src": "1549:2:1",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1520:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "1520:3:1"
                    },
                    "nativeSrc": "1520:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1520:32:1"
                  },
                  "nativeSrc": "1517:52:1",
                  "nodeType": "YulIf",
                  "src": "1517:52:1"
                },
                {
                  "nativeSrc": "1578:39:1",
                  "nodeType": "YulAssignment",
                  "src": "1578:39:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1607:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1607:9:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "1588:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "1588:18:1"
                    },
                    "nativeSrc": "1588:29:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1588:29:1"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1578:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1578:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "1626:48:1",
                  "nodeType": "YulAssignment",
                  "src": "1626:48:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1659:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "1659:9:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1670:2:1",
                            "nodeType": "YulLiteral",
                            "src": "1670:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1655:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1655:3:1"
                        },
                        "nativeSrc": "1655:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1655:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "1636:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "1636:18:1"
                    },
                    "nativeSrc": "1636:38:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1636:38:1"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1626:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1626:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "1683:14:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1683:14:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1696:1:1",
                    "nodeType": "YulLiteral",
                    "src": "1696:1:1",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1687:5:1",
                      "nodeType": "YulTypedName",
                      "src": "1687:5:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1706:41:1",
                  "nodeType": "YulAssignment",
                  "src": "1706:41:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1732:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "1732:9:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1743:2:1",
                            "nodeType": "YulLiteral",
                            "src": "1743:2:1",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1728:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1728:3:1"
                        },
                        "nativeSrc": "1728:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1728:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1715:12:1",
                      "nodeType": "YulIdentifier",
                      "src": "1715:12:1"
                    },
                    "nativeSrc": "1715:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1715:32:1"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1706:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "1706:5:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "1756:15:1",
                  "nodeType": "YulAssignment",
                  "src": "1756:15:1",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1766:5:1",
                    "nodeType": "YulIdentifier",
                    "src": "1766:5:1"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "1756:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1756:6:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nativeSrc": "1403:374:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1457:9:1",
                "nodeType": "YulTypedName",
                "src": "1457:9:1",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1468:7:1",
                "nodeType": "YulTypedName",
                "src": "1468:7:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1480:6:1",
                "nodeType": "YulTypedName",
                "src": "1480:6:1",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1488:6:1",
                "nodeType": "YulTypedName",
                "src": "1488:6:1",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1496:6:1",
                "nodeType": "YulTypedName",
                "src": "1496:6:1",
                "type": ""
              }
            ],
            "src": "1403:374:1"
          },
          {
            "body": {
              "nativeSrc": "1852:156:1",
              "nodeType": "YulBlock",
              "src": "1852:156:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1898:16:1",
                    "nodeType": "YulBlock",
                    "src": "1898:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1907:1:1",
                              "nodeType": "YulLiteral",
                              "src": "1907:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1910:1:1",
                              "nodeType": "YulLiteral",
                              "src": "1910:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1900:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "1900:6:1"
                          },
                          "nativeSrc": "1900:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "1900:12:1"
                        },
                        "nativeSrc": "1900:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "1900:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1873:7:1",
                            "nodeType": "YulIdentifier",
                            "src": "1873:7:1"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1882:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "1882:9:1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1869:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "1869:3:1"
                        },
                        "nativeSrc": "1869:23:1",
                        "nodeType": "YulFunctionCall",
                        "src": "1869:23:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1894:2:1",
                        "nodeType": "YulLiteral",
                        "src": "1894:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1865:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "1865:3:1"
                    },
                    "nativeSrc": "1865:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1865:32:1"
                  },
                  "nativeSrc": "1862:52:1",
                  "nodeType": "YulIf",
                  "src": "1862:52:1"
                },
                {
                  "nativeSrc": "1923:14:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1923:14:1",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1936:1:1",
                    "nodeType": "YulLiteral",
                    "src": "1936:1:1",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1927:5:1",
                      "nodeType": "YulTypedName",
                      "src": "1927:5:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1946:32:1",
                  "nodeType": "YulAssignment",
                  "src": "1946:32:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1968:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "1968:9:1"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1955:12:1",
                      "nodeType": "YulIdentifier",
                      "src": "1955:12:1"
                    },
                    "nativeSrc": "1955:23:1",
                    "nodeType": "YulFunctionCall",
                    "src": "1955:23:1"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1946:5:1",
                      "nodeType": "YulIdentifier",
                      "src": "1946:5:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "1987:15:1",
                  "nodeType": "YulAssignment",
                  "src": "1987:15:1",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1997:5:1",
                    "nodeType": "YulIdentifier",
                    "src": "1997:5:1"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1987:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "1987:6:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nativeSrc": "1782:226:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1818:9:1",
                "nodeType": "YulTypedName",
                "src": "1818:9:1",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1829:7:1",
                "nodeType": "YulTypedName",
                "src": "1829:7:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1841:6:1",
                "nodeType": "YulTypedName",
                "src": "1841:6:1",
                "type": ""
              }
            ],
            "src": "1782:226:1"
          },
          {
            "body": {
              "nativeSrc": "2110:87:1",
              "nodeType": "YulBlock",
              "src": "2110:87:1",
              "statements": [
                {
                  "nativeSrc": "2120:26:1",
                  "nodeType": "YulAssignment",
                  "src": "2120:26:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2132:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "2132:9:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2143:2:1",
                        "nodeType": "YulLiteral",
                        "src": "2143:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2128:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2128:3:1"
                    },
                    "nativeSrc": "2128:18:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2128:18:1"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2120:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "2120:4:1"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2162:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "2162:9:1"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2177:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "2177:6:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2185:4:1",
                            "nodeType": "YulLiteral",
                            "src": "2185:4:1",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2173:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "2173:3:1"
                        },
                        "nativeSrc": "2173:17:1",
                        "nodeType": "YulFunctionCall",
                        "src": "2173:17:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2155:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2155:6:1"
                    },
                    "nativeSrc": "2155:36:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2155:36:1"
                  },
                  "nativeSrc": "2155:36:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "2155:36:1"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
            "nativeSrc": "2013:184:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2079:9:1",
                "nodeType": "YulTypedName",
                "src": "2079:9:1",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2090:6:1",
                "nodeType": "YulTypedName",
                "src": "2090:6:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2101:4:1",
                "nodeType": "YulTypedName",
                "src": "2101:4:1",
                "type": ""
              }
            ],
            "src": "2013:184:1"
          },
          {
            "body": {
              "nativeSrc": "2272:116:1",
              "nodeType": "YulBlock",
              "src": "2272:116:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2318:16:1",
                    "nodeType": "YulBlock",
                    "src": "2318:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2327:1:1",
                              "nodeType": "YulLiteral",
                              "src": "2327:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2330:1:1",
                              "nodeType": "YulLiteral",
                              "src": "2330:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2320:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "2320:6:1"
                          },
                          "nativeSrc": "2320:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "2320:12:1"
                        },
                        "nativeSrc": "2320:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "2320:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2293:7:1",
                            "nodeType": "YulIdentifier",
                            "src": "2293:7:1"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2302:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "2302:9:1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2289:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "2289:3:1"
                        },
                        "nativeSrc": "2289:23:1",
                        "nodeType": "YulFunctionCall",
                        "src": "2289:23:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2314:2:1",
                        "nodeType": "YulLiteral",
                        "src": "2314:2:1",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2285:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2285:3:1"
                    },
                    "nativeSrc": "2285:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2285:32:1"
                  },
                  "nativeSrc": "2282:52:1",
                  "nodeType": "YulIf",
                  "src": "2282:52:1"
                },
                {
                  "nativeSrc": "2343:39:1",
                  "nodeType": "YulAssignment",
                  "src": "2343:39:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2372:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "2372:9:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "2353:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "2353:18:1"
                    },
                    "nativeSrc": "2353:29:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2353:29:1"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2343:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2343:6:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nativeSrc": "2202:186:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2238:9:1",
                "nodeType": "YulTypedName",
                "src": "2238:9:1",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2249:7:1",
                "nodeType": "YulTypedName",
                "src": "2249:7:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2261:6:1",
                "nodeType": "YulTypedName",
                "src": "2261:6:1",
                "type": ""
              }
            ],
            "src": "2202:186:1"
          },
          {
            "body": {
              "nativeSrc": "2480:173:1",
              "nodeType": "YulBlock",
              "src": "2480:173:1",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2526:16:1",
                    "nodeType": "YulBlock",
                    "src": "2526:16:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2535:1:1",
                              "nodeType": "YulLiteral",
                              "src": "2535:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2538:1:1",
                              "nodeType": "YulLiteral",
                              "src": "2538:1:1",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2528:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "2528:6:1"
                          },
                          "nativeSrc": "2528:12:1",
                          "nodeType": "YulFunctionCall",
                          "src": "2528:12:1"
                        },
                        "nativeSrc": "2528:12:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "2528:12:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2501:7:1",
                            "nodeType": "YulIdentifier",
                            "src": "2501:7:1"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2510:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "2510:9:1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2497:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "2497:3:1"
                        },
                        "nativeSrc": "2497:23:1",
                        "nodeType": "YulFunctionCall",
                        "src": "2497:23:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2522:2:1",
                        "nodeType": "YulLiteral",
                        "src": "2522:2:1",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2493:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2493:3:1"
                    },
                    "nativeSrc": "2493:32:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2493:32:1"
                  },
                  "nativeSrc": "2490:52:1",
                  "nodeType": "YulIf",
                  "src": "2490:52:1"
                },
                {
                  "nativeSrc": "2551:39:1",
                  "nodeType": "YulAssignment",
                  "src": "2551:39:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2580:9:1",
                        "nodeType": "YulIdentifier",
                        "src": "2580:9:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "2561:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "2561:18:1"
                    },
                    "nativeSrc": "2561:29:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2561:29:1"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2551:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2551:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "2599:48:1",
                  "nodeType": "YulAssignment",
                  "src": "2599:48:1",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2632:9:1",
                            "nodeType": "YulIdentifier",
                            "src": "2632:9:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2643:2:1",
                            "nodeType": "YulLiteral",
                            "src": "2643:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2628:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "2628:3:1"
                        },
                        "nativeSrc": "2628:18:1",
                        "nodeType": "YulFunctionCall",
                        "src": "2628:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "2609:18:1",
                      "nodeType": "YulIdentifier",
                      "src": "2609:18:1"
                    },
                    "nativeSrc": "2609:38:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2609:38:1"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2599:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2599:6:1"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nativeSrc": "2393:260:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2438:9:1",
                "nodeType": "YulTypedName",
                "src": "2438:9:1",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2449:7:1",
                "nodeType": "YulTypedName",
                "src": "2449:7:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2461:6:1",
                "nodeType": "YulTypedName",
                "src": "2461:6:1",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2469:6:1",
                "nodeType": "YulTypedName",
                "src": "2469:6:1",
                "type": ""
              }
            ],
            "src": "2393:260:1"
          },
          {
            "body": {
              "nativeSrc": "2690:95:1",
              "nodeType": "YulBlock",
              "src": "2690:95:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "2707:1:1",
                        "nodeType": "YulLiteral",
                        "src": "2707:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "2714:3:1",
                            "nodeType": "YulLiteral",
                            "src": "2714:3:1",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2719:10:1",
                            "nodeType": "YulLiteral",
                            "src": "2719:10:1",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "2710:3:1",
                          "nodeType": "YulIdentifier",
                          "src": "2710:3:1"
                        },
                        "nativeSrc": "2710:20:1",
                        "nodeType": "YulFunctionCall",
                        "src": "2710:20:1"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2700:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2700:6:1"
                    },
                    "nativeSrc": "2700:31:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2700:31:1"
                  },
                  "nativeSrc": "2700:31:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "2700:31:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "2747:1:1",
                        "nodeType": "YulLiteral",
                        "src": "2747:1:1",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2750:4:1",
                        "nodeType": "YulLiteral",
                        "src": "2750:4:1",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2740:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2740:6:1"
                    },
                    "nativeSrc": "2740:15:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2740:15:1"
                  },
                  "nativeSrc": "2740:15:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "2740:15:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "2771:1:1",
                        "nodeType": "YulLiteral",
                        "src": "2771:1:1",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2774:4:1",
                        "nodeType": "YulLiteral",
                        "src": "2774:4:1",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "2764:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2764:6:1"
                    },
                    "nativeSrc": "2764:15:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2764:15:1"
                  },
                  "nativeSrc": "2764:15:1",
                  "nodeType": "YulExpressionStatement",
                  "src": "2764:15:1"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "2658:127:1",
            "nodeType": "YulFunctionDefinition",
            "src": "2658:127:1"
          },
          {
            "body": {
              "nativeSrc": "2838:77:1",
              "nodeType": "YulBlock",
              "src": "2838:77:1",
              "statements": [
                {
                  "nativeSrc": "2848:16:1",
                  "nodeType": "YulAssignment",
                  "src": "2848:16:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "2859:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "2859:1:1"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "2862:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "2862:1:1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2855:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2855:3:1"
                    },
                    "nativeSrc": "2855:9:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2855:9:1"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "2848:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2848:3:1"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2887:22:1",
                    "nodeType": "YulBlock",
                    "src": "2887:22:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "2889:16:1",
                            "nodeType": "YulIdentifier",
                            "src": "2889:16:1"
                          },
                          "nativeSrc": "2889:18:1",
                          "nodeType": "YulFunctionCall",
                          "src": "2889:18:1"
                        },
                        "nativeSrc": "2889:18:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "2889:18:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "2879:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "2879:1:1"
                      },
                      {
                        "name": "sum",
                        "nativeSrc": "2882:3:1",
                        "nodeType": "YulIdentifier",
                        "src": "2882:3:1"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2876:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "2876:2:1"
                    },
                    "nativeSrc": "2876:10:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2876:10:1"
                  },
                  "nativeSrc": "2873:36:1",
                  "nodeType": "YulIf",
                  "src": "2873:36:1"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nativeSrc": "2790:125:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "2821:1:1",
                "nodeType": "YulTypedName",
                "src": "2821:1:1",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "2824:1:1",
                "nodeType": "YulTypedName",
                "src": "2824:1:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "2830:3:1",
                "nodeType": "YulTypedName",
                "src": "2830:3:1",
                "type": ""
              }
            ],
            "src": "2790:125:1"
          },
          {
            "body": {
              "nativeSrc": "2975:325:1",
              "nodeType": "YulBlock",
              "src": "2975:325:1",
              "statements": [
                {
                  "nativeSrc": "2985:22:1",
                  "nodeType": "YulAssignment",
                  "src": "2985:22:1",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "2999:1:1",
                        "nodeType": "YulLiteral",
                        "src": "2999:1:1",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "3002:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "3002:4:1"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "2995:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "2995:3:1"
                    },
                    "nativeSrc": "2995:12:1",
                    "nodeType": "YulFunctionCall",
                    "src": "2995:12:1"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "2985:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "2985:6:1"
                    }
                  ]
                },
                {
                  "nativeSrc": "3016:38:1",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3016:38:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "3046:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "3046:4:1"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3052:1:1",
                        "nodeType": "YulLiteral",
                        "src": "3052:1:1",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "3042:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "3042:3:1"
                    },
                    "nativeSrc": "3042:12:1",
                    "nodeType": "YulFunctionCall",
                    "src": "3042:12:1"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "3020:18:1",
                      "nodeType": "YulTypedName",
                      "src": "3020:18:1",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3093:31:1",
                    "nodeType": "YulBlock",
                    "src": "3093:31:1",
                    "statements": [
                      {
                        "nativeSrc": "3095:27:1",
                        "nodeType": "YulAssignment",
                        "src": "3095:27:1",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "3109:6:1",
                              "nodeType": "YulIdentifier",
                              "src": "3109:6:1"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3117:4:1",
                              "nodeType": "YulLiteral",
                              "src": "3117:4:1",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "3105:3:1",
                            "nodeType": "YulIdentifier",
                            "src": "3105:3:1"
                          },
                          "nativeSrc": "3105:17:1",
                          "nodeType": "YulFunctionCall",
                          "src": "3105:17:1"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "3095:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "3095:6:1"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "3073:18:1",
                        "nodeType": "YulIdentifier",
                        "src": "3073:18:1"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3066:6:1",
                      "nodeType": "YulIdentifier",
                      "src": "3066:6:1"
                    },
                    "nativeSrc": "3066:26:1",
                    "nodeType": "YulFunctionCall",
                    "src": "3066:26:1"
                  },
                  "nativeSrc": "3063:61:1",
                  "nodeType": "YulIf",
                  "src": "3063:61:1"
                },
                {
                  "body": {
                    "nativeSrc": "3183:111:1",
                    "nodeType": "YulBlock",
                    "src": "3183:111:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3204:1:1",
                              "nodeType": "YulLiteral",
                              "src": "3204:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "3211:3:1",
                                  "nodeType": "YulLiteral",
                                  "src": "3211:3:1",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "3216:10:1",
                                  "nodeType": "YulLiteral",
                                  "src": "3216:10:1",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "3207:3:1",
                                "nodeType": "YulIdentifier",
                                "src": "3207:3:1"
                              },
                              "nativeSrc": "3207:20:1",
                              "nodeType": "YulFunctionCall",
                              "src": "3207:20:1"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3197:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "3197:6:1"
                          },
                          "nativeSrc": "3197:31:1",
                          "nodeType": "YulFunctionCall",
                          "src": "3197:31:1"
                        },
                        "nativeSrc": "3197:31:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "3197:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3248:1:1",
                              "nodeType": "YulLiteral",
                              "src": "3248:1:1",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3251:4:1",
                              "nodeType": "YulLiteral",
                              "src": "3251:4:1",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3241:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "3241:6:1"
                          },
                          "nativeSrc": "3241:15:1",
                          "nodeType": "YulFunctionCall",
                          "src": "3241:15:1"
                        },
                        "nativeSrc": "3241:15:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "3241:15:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3276:1:1",
                              "nodeType": "YulLiteral",
                              "src": "3276:1:1",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3279:4:1",
                              "nodeType": "YulLiteral",
                              "src": "3279:4:1",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3269:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "3269:6:1"
                          },
                          "nativeSrc": "3269:15:1",
                          "nodeType": "YulFunctionCall",
                          "src": "3269:15:1"
                        },
                        "nativeSrc": "3269:15:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "3269:15:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "3139:18:1",
                        "nodeType": "YulIdentifier",
                        "src": "3139:18:1"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "3162:6:1",
                            "nodeType": "YulIdentifier",
                            "src": "3162:6:1"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3170:2:1",
                            "nodeType": "YulLiteral",
                            "src": "3170:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "3159:2:1",
                          "nodeType": "YulIdentifier",
                          "src": "3159:2:1"
                        },
                        "nativeSrc": "3159:14:1",
                        "nodeType": "YulFunctionCall",
                        "src": "3159:14:1"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "3136:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "3136:2:1"
                    },
                    "nativeSrc": "3136:38:1",
                    "nodeType": "YulFunctionCall",
                    "src": "3136:38:1"
                  },
                  "nativeSrc": "3133:161:1",
                  "nodeType": "YulIf",
                  "src": "3133:161:1"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "2920:380:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "2955:4:1",
                "nodeType": "YulTypedName",
                "src": "2955:4:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "2964:6:1",
                "nodeType": "YulTypedName",
                "src": "2964:6:1",
                "type": ""
              }
            ],
            "src": "2920:380:1"
          },
          {
            "body": {
              "nativeSrc": "3354:79:1",
              "nodeType": "YulBlock",
              "src": "3354:79:1",
              "statements": [
                {
                  "nativeSrc": "3364:17:1",
                  "nodeType": "YulAssignment",
                  "src": "3364:17:1",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3376:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "3376:1:1"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "3379:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "3379:1:1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "3372:3:1",
                      "nodeType": "YulIdentifier",
                      "src": "3372:3:1"
                    },
                    "nativeSrc": "3372:9:1",
                    "nodeType": "YulFunctionCall",
                    "src": "3372:9:1"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "3364:4:1",
                      "nodeType": "YulIdentifier",
                      "src": "3364:4:1"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3405:22:1",
                    "nodeType": "YulBlock",
                    "src": "3405:22:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "3407:16:1",
                            "nodeType": "YulIdentifier",
                            "src": "3407:16:1"
                          },
                          "nativeSrc": "3407:18:1",
                          "nodeType": "YulFunctionCall",
                          "src": "3407:18:1"
                        },
                        "nativeSrc": "3407:18:1",
                        "nodeType": "YulExpressionStatement",
                        "src": "3407:18:1"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "3396:4:1",
                        "nodeType": "YulIdentifier",
                        "src": "3396:4:1"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "3402:1:1",
                        "nodeType": "YulIdentifier",
                        "src": "3402:1:1"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3393:2:1",
                      "nodeType": "YulIdentifier",
                      "src": "3393:2:1"
                    },
                    "nativeSrc": "3393:11:1",
                    "nodeType": "YulFunctionCall",
                    "src": "3393:11:1"
                  },
                  "nativeSrc": "3390:37:1",
                  "nodeType": "YulIf",
                  "src": "3390:37:1"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "3305:128:1",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3336:1:1",
                "nodeType": "YulTypedName",
                "src": "3336:1:1",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3339:1:1",
                "nodeType": "YulTypedName",
                "src": "3339:1:1",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "3345:4:1",
                "nodeType": "YulTypedName",
                "src": "3345:4:1",
                "type": ""
              }
            ],
            "src": "3305:128:1"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), 32)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n}",
      "id": 1,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "218:37:0:-:0;200:1577;218:37;;200:1577;218:37;;;-1:-1:-1;;;218:37:0;;-1:-1:-1;;218:37:0;;-1:-1:-1;218:37:0;:::i;:::-;-1:-1:-1;258:29:0;;;;;;;;;;;;-1:-1:-1;;;258:29:0;;;;;;;;;;:::i;:::-;-1:-1:-1;290:27:0;;;-1:-1:-1;;290:27:0;315:2;290:27;;;200:1577;;;;;;;;;;;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:1;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;748:421;657:518;;;:::o;1351:1299::-;1471:10;;-1:-1:-1;;;;;1493:30:1;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1701:4;1732:2;1721:14;;1749:1;1744:649;;;;2437:1;2454:6;2451:89;;;-1:-1:-1;2506:19:1;;;2500:26;2451:89;-1:-1:-1;;1308:1:1;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2553:81;;1714:930;;1744:649;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1780:20:1;;;1898:222;1912:7;1909:1;1906:14;1898:222;;;1994:19;;;1988:26;1973:42;;2101:4;2086:20;;;;2054:1;2042:14;;;;1928:12;1898:222;;;1902:3;2148:6;2139:7;2136:19;2133:201;;;2209:19;;;2203:26;-1:-1:-1;;2292:1:1;2288:14;;;2304:3;2284:24;2280:37;2276:42;2261:58;2246:74;;2133:201;-1:-1:-1;;;;2380:1:1;2364:14;;;2360:22;2347:36;;-1:-1:-1;1351:1299:1:o;:::-;200:1577:0;;;;;;",
  "deployedSourceMap": "200:1577:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;705:9;:7;:9::i;:::-;200:1577;;;;;218:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1115:156;;;;;;;;;;-1:-1:-1;1115:156:0;;;;;:::i;:::-;;:::i;:::-;;;1194:14:1;;1187:22;1169:41;;1157:2;1142:18;1115:156:0;1029:187:1;1025:86:0;;;;;;;;;;-1:-1:-1;1086:21:0;1025:86;;;1367:25:1;;;1355:2;1340:18;1025:86:0;1221:177:1;1389:386:0;;;;;;;;;;-1:-1:-1;1389:386:0;;;;;:::i;:::-;;:::i;837:185::-;;;;;;;;;;-1:-1:-1;837:185:0;;;;;:::i;:::-;;:::i;290:27::-;;;;;;;;;;-1:-1:-1;290:27:0;;;;;;;;;;;2185:4:1;2173:17;;;2155:36;;2143:2;2128:18;290:27:0;2013:184:1;557:47:0;;;;;;;;;;-1:-1:-1;557:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;258:29;;;;;;;;;;;;;:::i;1274:112::-;;;;;;;;;;-1:-1:-1;1274:112:0;;;;;:::i;:::-;;:::i;720:115::-;;;:::i;607:63::-;;;;;;;;;;-1:-1:-1;607:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;720:115;768:10;758:21;;;;:9;:21;;;;;:34;;783:9;;758:21;:34;;783:9;;758:34;:::i;:::-;;;;-1:-1:-1;;801:30:0;;821:9;1367:25:1;;809:10:0;;801:30;;1355:2:1;1340:18;801:30:0;;;;;;;720:115::o;218:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1115:156::-;1191:10;1171:4;1181:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1181:26:0;;;;;;;;;;:32;;;1222:30;1171:4;;1181:26;;1222:30;;;;1210:3;1367:25:1;;1355:2;1340:18;;1221:177;1222:30:0;;;;;;;;-1:-1:-1;1263:4:0;1115:156;;;;;:::o;1389:386::-;-1:-1:-1;;;;;1484:14:0;;1465:4;1484:14;;;:9;:14;;;;;;:21;-1:-1:-1;1484:21:0;1476:30;;;;;;-1:-1:-1;;;;;1515:17:0;;1522:10;1515:17;;;;:65;;-1:-1:-1;;;;;;1536:14:0;;;;;;:9;:14;;;;;;;;1551:10;1536:26;;;;;;;;-1:-1:-1;;1536:44:0;;1515:65;1511:161;;;-1:-1:-1;;;;;1595:14:0;;;;;;:9;:14;;;;;;;;1610:10;1595:26;;;;;;;;:33;-1:-1:-1;1595:33:0;1587:42;;;;;;-1:-1:-1;;;;;1634:14:0;;;;;;:9;:14;;;;;;;;1649:10;1634:26;;;;;;;:33;;1664:3;;1634:14;:33;;1664:3;;1634:33;:::i;:::-;;;;-1:-1:-1;;1511:161:0;-1:-1:-1;;;;;1676:14:0;;;;;;:9;:14;;;;;:21;;1694:3;;1676:14;:21;;1694:3;;1676:21;:::i;:::-;;;;-1:-1:-1;;;;;;;1701:14:0;;;;;;:9;:14;;;;;:21;;1719:3;;1701:14;:21;;1719:3;;1701:21;:::i;:::-;;;;;;;;1746:3;-1:-1:-1;;;;;1732:23:0;1741:3;-1:-1:-1;;;;;1732:23:0;;1751:3;1732:23;;;;1367:25:1;;1355:2;1340:18;;1221:177;1732:23:0;;;;;;;;-1:-1:-1;1767:4:0;1389:386;;;;;:::o;837:185::-;894:10;884:21;;;;:9;:21;;;;;;:28;-1:-1:-1;884:28:0;876:37;;;;;;927:10;917:21;;;;:9;:21;;;;;:28;;942:3;;917:21;:28;;942:3;;917:28;:::i;:::-;;;;-1:-1:-1;;949:33:0;;957:10;;949:33;;;;;978:3;;949:33;;;;978:3;957:10;949:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;991:27:0;;1367:25:1;;;1002:10:0;;991:27;;1355:2:1;1340:18;991:27:0;;;;;;;837:185;:::o;258:29::-;;;;;;;:::i;1274:112::-;1331:4;1348:34;1361:10;1373:3;1378;1348:12;:34::i;:::-;1341:41;1274:112;-1:-1:-1;;;1274:112:0:o;14:527:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:173::-;614:20;;-1:-1:-1;;;;;663:31:1;;653:42;;643:70;;709:1;706;699:12;643:70;546:173;;;:::o;724:300::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:29;911:9;892:29;:::i;:::-;882:39;990:2;975:18;;;;962:32;;-1:-1:-1;;;724:300:1:o;1403:374::-;1480:6;1488;1496;1549:2;1537:9;1528:7;1524:23;1520:32;1517:52;;;1565:1;1562;1555:12;1517:52;1588:29;1607:9;1588:29;:::i;:::-;1578:39;;1636:38;1670:2;1659:9;1655:18;1636:38;:::i;:::-;1403:374;;1626:48;;-1:-1:-1;;;1743:2:1;1728:18;;;;1715:32;;1403:374::o;1782:226::-;1841:6;1894:2;1882:9;1873:7;1869:23;1865:32;1862:52;;;1910:1;1907;1900:12;1862:52;-1:-1:-1;1955:23:1;;1782:226;-1:-1:-1;1782:226:1:o;2202:186::-;2261:6;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2353:29;2372:9;2353:29;:::i;2393:260::-;2461:6;2469;2522:2;2510:9;2501:7;2497:23;2493:32;2490:52;;;2538:1;2535;2528:12;2490:52;2561:29;2580:9;2561:29;:::i;:::-;2551:39;;2609:38;2643:2;2632:9;2628:18;2609:38;:::i;:::-;2599:48;;2393:260;;;;;:::o;2658:127::-;2719:10;2714:3;2710:20;2707:1;2700:31;2750:4;2747:1;2740:15;2774:4;2771:1;2764:15;2790:125;2855:9;;;2876:10;;;2873:36;;;2889:18;;:::i;2920:380::-;2999:1;2995:12;;;;3042;;;3063:61;;3117:4;3109:6;3105:17;3095:27;;3063:61;3170:2;3162:6;3159:14;3139:18;3136:38;3133:161;;3216:10;3211:3;3207:20;3204:1;3197:31;3251:4;3248:1;3241:15;3279:4;3276:1;3269:15;3133:161;;2920:380;;;:::o;3305:128::-;3372:9;;;3393:11;;;3390:37;;;3407:18;;:::i",
  "source": "/**\n * Submitted for verification at Etherscan.io on 2017-12-12\n */\n\n// Copyright (C) 2015, 2016, 2017 Dapphub\n// GNU GPL version 3\n// SPDX-License-Identifier: GPL-3.0-only\n\npragma solidity ^0.8.18;\n\ncontract WETH9 {\n\tstring public name\t\t= \"Wrapped Ether\";\n\tstring public symbol\t= \"WETH\";\n\tuint8  public decimals\t= 18;\n\n\tevent\tApproval(address indexed src, address indexed guy, uint wad);\n\tevent\tTransfer(address indexed src, address indexed dst, uint wad);\n\tevent\tDeposit(address indexed dst, uint wad);\n\tevent\tWithdrawal(address indexed src, uint wad);\n\n\tmapping (address => uint)\t\t\t\t\t\tpublic balanceOf;\n\tmapping (address => mapping (address => uint))\tpublic allowance;\n\n\treceive() external payable {\n\t\tdeposit();\n\t}\n\tfunction deposit() public payable {\n\t\tbalanceOf[msg.sender] += msg.value;\n\t\temit Deposit(msg.sender, msg.value);\n\t}\n\tfunction withdraw(uint wad) public {\n\t\trequire(balanceOf[msg.sender] >= wad);\n\t\tbalanceOf[msg.sender] -= wad;\n\t\tpayable(msg.sender).transfer(wad);\n\t\temit Withdrawal(msg.sender, wad);\n\t}\n\n\tfunction totalSupply() public view returns (uint) {\n\t\treturn address(this).balance;\n\t}\n\t\n\tfunction approve(address guy, uint wad) public returns (bool) {\n\t\tallowance[msg.sender][guy] = wad;\n\t\temit Approval(msg.sender, guy, wad);\n\t\treturn true;\n\t}\n\n\tfunction transfer(address dst, uint wad) public returns (bool) {\n\t\treturn transferFrom(msg.sender, dst, wad);\n\t}\n\n\tfunction transferFrom(address src, address dst, uint wad)\n\t\tpublic returns (bool)\n\t{\n\t\trequire(balanceOf[src] >= wad);\n\n\t\tif (src != msg.sender && allowance[src][msg.sender] != type(uint).max) {\n\t\t\trequire(allowance[src][msg.sender] >= wad);\n\t\t\tallowance[src][msg.sender] -= wad;\n\t\t}\n\n\t\tbalanceOf[src] -= wad;\n\t\tbalanceOf[dst] += wad;\n\n\t\temit Transfer(src, dst, wad);\n\n\t\treturn true;\n\t}\n}\n",
  "sourcePath": "/home/ensh/dapp/truffle/contracts/weth9.sol",
  "ast": {
    "absolutePath": "project:/contracts/weth9.sol",
    "exportedSymbols": {
      "WETH9": [
        248
      ]
    },
    "id": 249,
    "license": "GPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "174:24:0"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WETH9",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 248,
        "linearizedBaseContracts": [
          248
        ],
        "name": "WETH9",
        "nameLocation": "209:5:0",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "06fdde03",
            "id": 4,
            "mutability": "mutable",
            "name": "name",
            "nameLocation": "232:4:0",
            "nodeType": "VariableDeclaration",
            "scope": 248,
            "src": "218:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "218:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "hexValue": "57726170706564204574686572",
              "id": 3,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "240:15:0",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3",
                "typeString": "literal_string \"Wrapped Ether\""
              },
              "value": "Wrapped Ether"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "95d89b41",
            "id": 7,
            "mutability": "mutable",
            "name": "symbol",
            "nameLocation": "272:6:0",
            "nodeType": "VariableDeclaration",
            "scope": 248,
            "src": "258:29:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 5,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "258:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "hexValue": "57455448",
              "id": 6,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "281:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8",
                "typeString": "literal_string \"WETH\""
              },
              "value": "WETH"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "313ce567",
            "id": 10,
            "mutability": "mutable",
            "name": "decimals",
            "nameLocation": "304:8:0",
            "nodeType": "VariableDeclaration",
            "scope": 248,
            "src": "290:27:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 8,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "290:5:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "hexValue": "3138",
              "id": 9,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "315:2:0",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
            "id": 18,
            "name": "Approval",
            "nameLocation": "327:8:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "352:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 18,
                  "src": "336:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "336:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "guy",
                  "nameLocation": "373:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 18,
                  "src": "357:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "357:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "383:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 18,
                  "src": "378:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "335:52:0"
            },
            "src": "321:67:0"
          },
          {
            "anonymous": false,
            "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "id": 26,
            "name": "Transfer",
            "nameLocation": "396:8:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 25,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "421:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "405:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "405:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "dst",
                  "nameLocation": "442:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "426:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "426:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "452:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "447:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "404:52:0"
            },
            "src": "390:67:0"
          },
          {
            "anonymous": false,
            "eventSelector": "e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c",
            "id": 32,
            "name": "Deposit",
            "nameLocation": "465:7:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 31,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "dst",
                  "nameLocation": "489:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 32,
                  "src": "473:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "499:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 32,
                  "src": "494:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "494:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "472:31:0"
            },
            "src": "459:45:0"
          },
          {
            "anonymous": false,
            "eventSelector": "7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65",
            "id": 38,
            "name": "Withdrawal",
            "nameLocation": "512:10:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 37,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "539:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 38,
                  "src": "523:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "523:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 36,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "549:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 38,
                  "src": "544:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 35,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "522:31:0"
            },
            "src": "506:48:0"
          },
          {
            "constant": false,
            "functionSelector": "70a08231",
            "id": 42,
            "mutability": "mutable",
            "name": "balanceOf",
            "nameLocation": "595:9:0",
            "nodeType": "VariableDeclaration",
            "scope": 248,
            "src": "557:47:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 41,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 39,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "566:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "557:25:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 40,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "577:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "dd62ed3e",
            "id": 48,
            "mutability": "mutable",
            "name": "allowance",
            "nameLocation": "661:9:0",
            "nodeType": "VariableDeclaration",
            "scope": 248,
            "src": "607:63:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(address => mapping(address => uint256))"
            },
            "typeName": {
              "id": 47,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 43,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "616:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "607:46:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(address => mapping(address => uint256))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 46,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 44,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "636:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "627:25:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 45,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "647:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 54,
              "nodeType": "Block",
              "src": "701:17:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 51,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 74,
                      "src": "705:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 52,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "705:9:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 53,
                  "nodeType": "ExpressionStatement",
                  "src": "705:9:0"
                }
              ]
            },
            "id": 55,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 49,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "681:2:0"
            },
            "returnParameters": {
              "id": 50,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "701:0:0"
            },
            "scope": 248,
            "src": "674:44:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 73,
              "nodeType": "Block",
              "src": "754:81:0",
              "statements": [
                {
                  "expression": {
                    "id": 64,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 58,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "758:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 61,
                      "indexExpression": {
                        "expression": {
                          "id": 59,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "768:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 60,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "772:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "768:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "758:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "expression": {
                        "id": 62,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "783:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 63,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "787:5:0",
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "783:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "758:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 65,
                  "nodeType": "ExpressionStatement",
                  "src": "758:34:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 67,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "809:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 68,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "813:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "809:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 69,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "821:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 70,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "825:5:0",
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "src": "821:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 66,
                      "name": "Deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32,
                      "src": "801:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 71,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "801:30:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 72,
                  "nodeType": "EmitStatement",
                  "src": "796:35:0"
                }
              ]
            },
            "functionSelector": "d0e30db0",
            "id": 74,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "729:7:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 56,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "736:2:0"
            },
            "returnParameters": {
              "id": 57,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "754:0:0"
            },
            "scope": 248,
            "src": "720:115:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 110,
              "nodeType": "Block",
              "src": "872:150:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 85,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 80,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42,
                            "src": "884:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 83,
                          "indexExpression": {
                            "expression": {
                              "id": 81,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "894:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 82,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "898:6:0",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "894:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "884:21:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 84,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 76,
                          "src": "909:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "884:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 79,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "876:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 86,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "876:37:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 87,
                  "nodeType": "ExpressionStatement",
                  "src": "876:37:0"
                },
                {
                  "expression": {
                    "id": 93,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 88,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "917:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 91,
                      "indexExpression": {
                        "expression": {
                          "id": 89,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "927:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 90,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "931:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "927:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "917:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 92,
                      "name": "wad",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 76,
                      "src": "942:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "917:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 94,
                  "nodeType": "ExpressionStatement",
                  "src": "917:28:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 101,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 76,
                        "src": "978:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 97,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "957:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 98,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "961:6:0",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "957:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 96,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "949:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_payable_$",
                            "typeString": "type(address payable)"
                          },
                          "typeName": {
                            "id": 95,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "949:8:0",
                            "stateMutability": "payable",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 99,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "949:19:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "969:8:0",
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "src": "949:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "949:33:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 103,
                  "nodeType": "ExpressionStatement",
                  "src": "949:33:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 105,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1002:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1006:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1002:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 107,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 76,
                        "src": "1014:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 104,
                      "name": "Withdrawal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38,
                      "src": "991:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "991:27:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 109,
                  "nodeType": "EmitStatement",
                  "src": "986:32:0"
                }
              ]
            },
            "functionSelector": "2e1a7d4d",
            "id": 111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "withdraw",
            "nameLocation": "846:8:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 77,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 76,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "860:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 111,
                  "src": "855:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 75,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "855:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "854:10:0"
            },
            "returnParameters": {
              "id": 78,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "872:0:0"
            },
            "scope": 248,
            "src": "837:185:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 122,
              "nodeType": "Block",
              "src": "1075:36:0",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 118,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -28,
                          "src": "1094:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WETH9_$248",
                            "typeString": "contract WETH9"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_WETH9_$248",
                            "typeString": "contract WETH9"
                          }
                        ],
                        "id": 117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1086:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 116,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1086:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1086:13:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1100:7:0",
                    "memberName": "balance",
                    "nodeType": "MemberAccess",
                    "src": "1086:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 115,
                  "id": 121,
                  "nodeType": "Return",
                  "src": "1079:28:0"
                }
              ]
            },
            "functionSelector": "18160ddd",
            "id": 123,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nameLocation": "1034:11:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 112,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1045:2:0"
            },
            "returnParameters": {
              "id": 115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 114,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 123,
                  "src": "1069:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1068:6:0"
            },
            "scope": 248,
            "src": "1025:86:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 150,
              "nodeType": "Block",
              "src": "1177:94:0",
              "statements": [
                {
                  "expression": {
                    "id": 139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 132,
                          "name": "allowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 48,
                          "src": "1181:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 136,
                        "indexExpression": {
                          "expression": {
                            "id": 133,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1191:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1195:6:0",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1191:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1181:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 137,
                      "indexExpression": {
                        "id": 135,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1203:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1181:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 138,
                      "name": "wad",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 127,
                      "src": "1210:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1181:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 140,
                  "nodeType": "ExpressionStatement",
                  "src": "1181:32:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 142,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1231:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1235:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1231:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 144,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1243:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 145,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 127,
                        "src": "1248:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 141,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18,
                      "src": "1222:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1222:30:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 147,
                  "nodeType": "EmitStatement",
                  "src": "1217:35:0"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1263:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 131,
                  "id": 149,
                  "nodeType": "Return",
                  "src": "1256:11:0"
                }
              ]
            },
            "functionSelector": "095ea7b3",
            "id": 151,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "1124:7:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 125,
                  "mutability": "mutable",
                  "name": "guy",
                  "nameLocation": "1140:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 151,
                  "src": "1132:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 124,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1132:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 127,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "1150:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 151,
                  "src": "1145:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 126,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1145:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1131:23:0"
            },
            "returnParameters": {
              "id": 131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 130,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 151,
                  "src": "1171:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 129,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1171:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1170:6:0"
            },
            "scope": 248,
            "src": "1115:156:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 167,
              "nodeType": "Block",
              "src": "1337:49:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 161,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1361:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1365:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1361:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 163,
                        "name": "dst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 153,
                        "src": "1373:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 164,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 155,
                        "src": "1378:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 160,
                      "name": "transferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 247,
                      "src": "1348:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) returns (bool)"
                      }
                    },
                    "id": 165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1348:34:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 159,
                  "id": 166,
                  "nodeType": "Return",
                  "src": "1341:41:0"
                }
              ]
            },
            "functionSelector": "a9059cbb",
            "id": 168,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nameLocation": "1283:8:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 153,
                  "mutability": "mutable",
                  "name": "dst",
                  "nameLocation": "1300:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "1292:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1292:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 155,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "1310:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "1305:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 154,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1291:23:0"
            },
            "returnParameters": {
              "id": 159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 158,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "1331:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 157,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1330:6:0"
            },
            "scope": 248,
            "src": "1274:112:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 246,
              "nodeType": "Block",
              "src": "1472:303:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 180,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42,
                            "src": "1484:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 182,
                          "indexExpression": {
                            "id": 181,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 170,
                            "src": "1494:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1484:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 183,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 174,
                          "src": "1502:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1484:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 179,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1476:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1476:30:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 186,
                  "nodeType": "ExpressionStatement",
                  "src": "1476:30:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 187,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 170,
                        "src": "1515:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "id": 188,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1522:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1526:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1522:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1515:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "baseExpression": {
                          "baseExpression": {
                            "id": 191,
                            "name": "allowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 48,
                            "src": "1536:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                              "typeString": "mapping(address => mapping(address => uint256))"
                            }
                          },
                          "id": 193,
                          "indexExpression": {
                            "id": 192,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 170,
                            "src": "1546:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1536:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 196,
                        "indexExpression": {
                          "expression": {
                            "id": 194,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1551:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1555:6:0",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1551:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1536:26:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1571:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 198,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1571:4:0",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              }
                            ],
                            "id": 197,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -27,
                            "src": "1566:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1566:10:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                            "typeString": "type(uint256)"
                          }
                        },
                        "id": 201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1577:3:0",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "1566:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1536:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1515:65:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 225,
                  "nodeType": "IfStatement",
                  "src": "1511:161:0",
                  "trueBody": {
                    "id": 224,
                    "nodeType": "Block",
                    "src": "1582:90:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 205,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 48,
                                    "src": "1595:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 207,
                                  "indexExpression": {
                                    "id": 206,
                                    "name": "src",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 170,
                                    "src": "1605:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1595:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 210,
                                "indexExpression": {
                                  "expression": {
                                    "id": 208,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1610:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1614:6:0",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1610:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1595:26:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 211,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 174,
                                "src": "1625:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1595:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 204,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1587:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1587:42:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 214,
                        "nodeType": "ExpressionStatement",
                        "src": "1587:42:0"
                      },
                      {
                        "expression": {
                          "id": 222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 215,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 48,
                                "src": "1634:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 219,
                              "indexExpression": {
                                "id": 216,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 170,
                                "src": "1644:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1634:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 220,
                            "indexExpression": {
                              "expression": {
                                "id": 217,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1649:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1653:6:0",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1649:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1634:26:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 221,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 174,
                            "src": "1664:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1634:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 223,
                        "nodeType": "ExpressionStatement",
                        "src": "1634:33:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 226,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1676:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 228,
                      "indexExpression": {
                        "id": 227,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 170,
                        "src": "1686:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1676:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 229,
                      "name": "wad",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "1694:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1676:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 231,
                  "nodeType": "ExpressionStatement",
                  "src": "1676:21:0"
                },
                {
                  "expression": {
                    "id": 236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 232,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1701:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 234,
                      "indexExpression": {
                        "id": 233,
                        "name": "dst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 172,
                        "src": "1711:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1701:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 235,
                      "name": "wad",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "1719:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1701:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 237,
                  "nodeType": "ExpressionStatement",
                  "src": "1701:21:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 239,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 170,
                        "src": "1741:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 240,
                        "name": "dst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 172,
                        "src": "1746:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 241,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 174,
                        "src": "1751:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 238,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "1732:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1732:23:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 243,
                  "nodeType": "EmitStatement",
                  "src": "1727:28:0"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1767:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 178,
                  "id": 245,
                  "nodeType": "Return",
                  "src": "1760:11:0"
                }
              ]
            },
            "functionSelector": "23b872dd",
            "id": 247,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "1398:12:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 175,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 170,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "1419:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 247,
                  "src": "1411:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 169,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1411:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 172,
                  "mutability": "mutable",
                  "name": "dst",
                  "nameLocation": "1432:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 247,
                  "src": "1424:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 171,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1424:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 174,
                  "mutability": "mutable",
                  "name": "wad",
                  "nameLocation": "1442:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 247,
                  "src": "1437:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 173,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1410:36:0"
            },
            "returnParameters": {
              "id": 178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 177,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 247,
                  "src": "1465:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 176,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1465:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1464:6:0"
            },
            "scope": 248,
            "src": "1389:386:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 249,
        "src": "200:1577:0",
        "usedErrors": [],
        "usedEvents": [
          18,
          26,
          32,
          38
        ]
      }
    ],
    "src": "174:1604:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.28+commit.7893614a.Linux.g++"
  },
  "networks": {
    "1337": {
      "events": {},
      "links": {},
      "address": "0x9745800493fC45ad2Dd122Dc267FB5eAd3e3D1f2",
      "transactionHash": "0xd05b3688895c9cb8086b8611721d7fbfeef76daac863f5a051fa57cd12ddcd9f"
    },
    "11155111": {
      "events": {},
      "links": {},
      "address": "0xC2F550Beb305AD6e2C910b68aB0593a7967B1878",
      "transactionHash": "0xab9d0be47c4860261ea339458b22625758b7606e9fa5b4cbacd431d500680727"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-05-15T04:50:28.285Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}