{
  "contractName": "NativeTokenAdapter",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "FailedFundsTransfer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "InsufficientMsgValueAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "MsgValueLowerThanFee",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SenderNotAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroGas",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "_bridge",
      "outputs": [
        {
          "internalType": "contract IBridge",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_resourceID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "recipientAddress",
          "type": "string"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "depositToEVM",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "gas",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        }
      ],
      "name": "depositToEVMWithMessage",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "depositDataAfterAmount",
          "type": "bytes"
        }
      ],
      "name": "depositGeneral",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedFundsTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientMsgValueAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"MsgValueLowerThanFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"_bridge\",\"outputs\":[{\"internalType\":\"contract IBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_resourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"recipientAddress\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"depositDataAfterAmount\",\"type\":\"bytes\"}],\"name\":\"depositGeneral\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositToEVM\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositToEVMWithMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"depositToEVMWithMessage(uint8,address,uint256,bytes)\":{\"params\":{\"destinationDomainID\":\"ID of destination chain.\",\"gas\":\"The amount of gas needed to successfully execute the call to recipient on the destination. Fee amount is directly affected by this value.\",\"message\":\"Arbitrary encoded bytes array that will be passed as the third argument in the ISygmaMessageReceiver(recipient).handleSygmaMessage(_, _, message) call. If you intend to use the DefaultMessageReceiver, make sure to encode the message to comply with the DefaultMessageReceiver.handleSygmaMessage() message decoding implementation.\",\"recipient\":\"The destination chain contract address that implements the ISygmaMessageReceiver interface. If the recipient is set to zero address then it will be replaced on the destination with the address of the DefaultMessageReceiver which is a generic ISygmaMessageReceiver implementation.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"depositToEVMWithMessage(uint8,address,uint256,bytes)\":{\"notice\":\"Makes a native token deposit with an included message.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/adapters/nativeTokens/NativeTokenAdapter.sol\":\"NativeTokenAdapter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/adapters/nativeTokens/NativeTokenAdapter.sol\":{\"keccak256\":\"0xa416787da294e2a0e77bc9a2d265239bdabdbf37d9c70d28107dded3e53a270a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://43b66acb96264bcd328f9c8176b5a422bf20f41f15d9b1e733994d22971d745c\",\"dweb:/ipfs/QmX7iSoKxDph8Bw5ASttj4hb6LFrwbw6XSCJbb88L3j1VF\"]},\"project:/contracts/interfaces/IBridge.sol\":{\"keccak256\":\"0x613f3a2a8156e8de182812fba42380ec873af6b5716405b1d4a9d9b39e31133a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b254a578f4524a5a04dee112456286ef86a4b77219a034123ae1d6833c3c0926\",\"dweb:/ipfs/QmPGtxJSXzVNc39qpzzn69Ks9QpaM48sscWbRS6ntZE7S1\"]},\"project:/contracts/interfaces/IFeeHandler.sol\":{\"keccak256\":\"0xb91ebf155a2ec6e36d2e5f884f829075cff788aaa367d6ffb09d3f956cb5384a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://102bea5ee61e82b2ed2c0db49dac1bfda190fde61ec25cc8d5988d1aad496e9b\",\"dweb:/ipfs/QmUonDedQaYyP5pz71JvmzMm9f9wg96ZpCYowSr9RMKs1U\"]}},\"version\":1}",
  "bytecode": "0x60c060405234801561001057600080fd5b50604051610cb1380380610cb183398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a051610bdd6100d4600039600081816101160152818161028c015281816103ce015261045001526000818160b20152818161016f015281816102070152818161039d01526104790152610bdd6000f3fe6080604052600436106100595760003560e01c80630929a2dc14610065578063a24b407c1461007a578063c03bb9081461008d578063c43e5f7d146100a0578063d8ca12b2146100f1578063f8ad7cc71461010457600080fd5b3661006057005b600080fd5b61007861007336600461072a565b610146565b005b6100786100883660046107d2565b6105bf565b61007861009b366004610854565b610610565b3480156100ac57600080fd5b506100d47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100786100ff3660046108c7565b610670565b34801561011057600080fd5b506101387f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e8565b3461016b57604051637d12a12960e01b81523460048201526024015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe4648f46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156101cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f1919061091c565b90506000816001600160a01b031663ef4f081f307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dd694f46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102899190610940565b877f000000000000000000000000000000000000000000000000000000000000000034896040516020016102be929190610989565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016102ed9594939291906109db565b6040805180830381865afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d9190610a31565b5090508034101561035357604051638e8d15d960e01b8152346004820152602401610162565b600061035f8234610a56565b905060008185604051602001610376929190610989565b60408051601f1981840301815290829052630e788b9360e31b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906373c45c989085906103f8908a907f0000000000000000000000000000000000000000000000000000000000000000908790600401610a7b565b60006040518083038185885af1158015610416573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261043f9190810190610ab8565b50506040516384db809f60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906384db809f90602401602060405180830381865afa1580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ec919061091c565b90506000816001600160a01b03168460405160006040518083038185875af1925050503d806000811461053b576040519150601f19603f3d011682016040523d82523d6000602084013e610540565b606091505b50509050806105625760405163176bfe0760e11b815260040160405180910390fd5b4780156105b45760405133908290600081818185875af1925050503d80600081146105a9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ae565b606091505b50909250505b505050505050505050565b60006014826040516020016105f092919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b604051602081830303815290604052905061060b8382610146565b505050565b8261062e57604051638ebd253360e01b815260040160405180910390fd5b60405160009061064d9060149087908790869088908290602001610b4c565b60405160208183030381529060405290506106688682610146565b505050505050565b60405160009061068890839085908290602001610b8d565b60405160208183030381529060405290506106a38482610146565b50505050565b60ff811681146106b857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156106fa576106fa6106bb565b604052919050565b600067ffffffffffffffff82111561071c5761071c6106bb565b50601f01601f191660200190565b6000806040838503121561073d57600080fd5b8235610748816106a9565b9150602083013567ffffffffffffffff81111561076457600080fd5b8301601f8101851361077557600080fd5b803561078861078382610702565b6106d1565b81815286602083850101111561079d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6001600160a01b03811681146106b857600080fd5b600080604083850312156107e557600080fd5b82356107f0816106a9565b91506020830135610800816107bd565b809150509250929050565b60008083601f84011261081d57600080fd5b50813567ffffffffffffffff81111561083557600080fd5b60208301915083602082850101111561084d57600080fd5b9250929050565b60008060008060006080868803121561086c57600080fd5b8535610877816106a9565b94506020860135610887816107bd565b935060408601359250606086013567ffffffffffffffff8111156108aa57600080fd5b6108b68882890161080b565b969995985093965092949392505050565b6000806000604084860312156108dc57600080fd5b83356108e7816106a9565b9250602084013567ffffffffffffffff81111561090357600080fd5b61090f8682870161080b565b9497909650939450505050565b60006020828403121561092e57600080fd5b8151610939816107bd565b9392505050565b60006020828403121561095257600080fd5b8151610939816106a9565b60005b83811015610978578181015183820152602001610960565b838111156106a35750506000910152565b828152600082516109a181602085016020870161095d565b919091016020019392505050565b600081518084526109c781602086016020860161095d565b601f01601f19169290920160200192915050565b60018060a01b038616815260ff8516602082015260ff8416604082015282606082015260c060808201526000610a1460c08301846109af565b82810360a084015260008152602081019150509695505050505050565b60008060408385031215610a4457600080fd5b825191506020830151610800816107bd565b600082821015610a7657634e487b7160e01b600052601160045260246000fd5b500390565b60ff84168152826020820152608060408201526000610a9d60808301846109af565b82810360608401526000815260208101915050949350505050565b60008060408385031215610acb57600080fd5b825167ffffffffffffffff8082168214610ae457600080fd5b602085015191935080821115610af957600080fd5b508301601f81018513610b0b57600080fd5b8051610b1961078382610702565b818152866020838501011115610b2e57600080fd5b610b3f82602083016020860161095d565b8093505050509250929050565b8681526bffffffffffffffffffffffff198660601b166020820152846034820152836054820152818360748301376000910160740190815295945050505050565b83815281836020830137600091016020019081529291505056fea26469706673582212202076e7529a0902cc3465faed00642a6696adf88cfc9b38bc95fa6ae56f04f1f264736f6c634300080b0033",
  "deployedBytecode": "0x6080604052600436106100595760003560e01c80630929a2dc14610065578063a24b407c1461007a578063c03bb9081461008d578063c43e5f7d146100a0578063d8ca12b2146100f1578063f8ad7cc71461010457600080fd5b3661006057005b600080fd5b61007861007336600461072a565b610146565b005b6100786100883660046107d2565b6105bf565b61007861009b366004610854565b610610565b3480156100ac57600080fd5b506100d47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100786100ff3660046108c7565b610670565b34801561011057600080fd5b506101387f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e8565b3461016b57604051637d12a12960e01b81523460048201526024015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe4648f46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156101cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f1919061091c565b90506000816001600160a01b031663ef4f081f307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dd694f46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102899190610940565b877f000000000000000000000000000000000000000000000000000000000000000034896040516020016102be929190610989565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016102ed9594939291906109db565b6040805180830381865afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d9190610a31565b5090508034101561035357604051638e8d15d960e01b8152346004820152602401610162565b600061035f8234610a56565b905060008185604051602001610376929190610989565b60408051601f1981840301815290829052630e788b9360e31b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906373c45c989085906103f8908a907f0000000000000000000000000000000000000000000000000000000000000000908790600401610a7b565b60006040518083038185885af1158015610416573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261043f9190810190610ab8565b50506040516384db809f60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906384db809f90602401602060405180830381865afa1580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ec919061091c565b90506000816001600160a01b03168460405160006040518083038185875af1925050503d806000811461053b576040519150601f19603f3d011682016040523d82523d6000602084013e610540565b606091505b50509050806105625760405163176bfe0760e11b815260040160405180910390fd5b4780156105b45760405133908290600081818185875af1925050503d80600081146105a9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ae565b606091505b50909250505b505050505050505050565b60006014826040516020016105f092919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b604051602081830303815290604052905061060b8382610146565b505050565b8261062e57604051638ebd253360e01b815260040160405180910390fd5b60405160009061064d9060149087908790869088908290602001610b4c565b60405160208183030381529060405290506106688682610146565b505050505050565b60405160009061068890839085908290602001610b8d565b60405160208183030381529060405290506106a38482610146565b50505050565b60ff811681146106b857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156106fa576106fa6106bb565b604052919050565b600067ffffffffffffffff82111561071c5761071c6106bb565b50601f01601f191660200190565b6000806040838503121561073d57600080fd5b8235610748816106a9565b9150602083013567ffffffffffffffff81111561076457600080fd5b8301601f8101851361077557600080fd5b803561078861078382610702565b6106d1565b81815286602083850101111561079d57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6001600160a01b03811681146106b857600080fd5b600080604083850312156107e557600080fd5b82356107f0816106a9565b91506020830135610800816107bd565b809150509250929050565b60008083601f84011261081d57600080fd5b50813567ffffffffffffffff81111561083557600080fd5b60208301915083602082850101111561084d57600080fd5b9250929050565b60008060008060006080868803121561086c57600080fd5b8535610877816106a9565b94506020860135610887816107bd565b935060408601359250606086013567ffffffffffffffff8111156108aa57600080fd5b6108b68882890161080b565b969995985093965092949392505050565b6000806000604084860312156108dc57600080fd5b83356108e7816106a9565b9250602084013567ffffffffffffffff81111561090357600080fd5b61090f8682870161080b565b9497909650939450505050565b60006020828403121561092e57600080fd5b8151610939816107bd565b9392505050565b60006020828403121561095257600080fd5b8151610939816106a9565b60005b83811015610978578181015183820152602001610960565b838111156106a35750506000910152565b828152600082516109a181602085016020870161095d565b919091016020019392505050565b600081518084526109c781602086016020860161095d565b601f01601f19169290920160200192915050565b60018060a01b038616815260ff8516602082015260ff8416604082015282606082015260c060808201526000610a1460c08301846109af565b82810360a084015260008152602081019150509695505050505050565b60008060408385031215610a4457600080fd5b825191506020830151610800816107bd565b600082821015610a7657634e487b7160e01b600052601160045260246000fd5b500390565b60ff84168152826020820152608060408201526000610a9d60808301846109af565b82810360608401526000815260208101915050949350505050565b60008060408385031215610acb57600080fd5b825167ffffffffffffffff8082168214610ae457600080fd5b602085015191935080821115610af957600080fd5b508301601f81018513610b0b57600080fd5b8051610b1961078382610702565b818152866020838501011115610b2e57600080fd5b610b3f82602083016020860161095d565b8093505050509250929050565b8681526bffffffffffffffffffffffff198660601b166020820152846034820152836054820152818360748301376000910160740190815295945050505050565b83815281836020830137600091016020019081529291505056fea26469706673582212202076e7529a0902cc3465faed00642a6696adf88cfc9b38bc95fa6ae56f04f1f264736f6c634300080b0033",
  "immutableReferences": {
    "12409": [
      {
        "length": 32,
        "start": 178
      },
      {
        "length": 32,
        "start": 367
      },
      {
        "length": 32,
        "start": 519
      },
      {
        "length": 32,
        "start": 925
      },
      {
        "length": 32,
        "start": 1145
      }
    ],
    "12411": [
      {
        "length": 32,
        "start": 278
      },
      {
        "length": 32,
        "start": 652
      },
      {
        "length": 32,
        "start": 974
      },
      {
        "length": 32,
        "start": 1104
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:367:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "112:253:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "158:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "167:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "170:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "160:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "160:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "160:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "133:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "142:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "129:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "129:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "154:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "125:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "125:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "122:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "183:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "202:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "196:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "196:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "187:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "275:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "284:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "287:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "277:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "277:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "277:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "234:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "245:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "260:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "265:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "256:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "256:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "269:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "252:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "252:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "241:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "241:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "231:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "231:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "224:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "224:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "221:70:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "300:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "310:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "300:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "324:35:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "344:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "355:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "340:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "340:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "334:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "334:25:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "324:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bytes32_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "70:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "81:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "93:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "101:6:105",
                "type": ""
              }
            ],
            "src": "14:351:105"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:9868:105",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:105",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "57:71:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "106:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "115:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "118:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "108:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "108:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "108:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "80:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "91:5:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "98:4:105",
                                "type": "",
                                "value": "0xff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "87:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "87:16:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "77:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "77:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "70:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "70:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "67:55:105"
                }
              ]
            },
            "name": "validator_revert_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "46:5:105",
                "type": ""
              }
            ],
            "src": "14:114:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "165:95:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "182:1:105",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "189:3:105",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "194:10:105",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "185:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "185:20:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "175:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "175:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "175:31:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "222:1:105",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "225:4:105",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "215:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "215:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "215:15:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "246:1:105",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "249:4:105",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "239:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "239:15:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "239:15:105"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "133:127:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "310:230:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "320:19:105",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "336:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "330:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "330:9:105"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "320:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "348:58:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "370:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "386:4:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "392:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "382:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "382:13:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "401:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "397:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "397:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "378:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "378:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "366:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "366:40:105"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "352:10:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "481:22:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "483:16:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "483:18:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "483:18:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "424:10:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "436:18:105",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "421:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "421:34:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "460:10:105"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "472:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "457:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "457:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "418:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "418:62:105"
                  },
                  "nodeType": "YulIf",
                  "src": "415:88:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "519:2:105",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "523:10:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "512:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "512:22:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "512:22:105"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "290:4:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "299:6:105",
                "type": ""
              }
            ],
            "src": "265:275:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "602:129:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "646:22:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "648:16:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "648:18:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "648:18:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "618:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "626:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "615:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "615:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "612:56:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "677:48:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "697:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "705:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "693:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "693:15:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "714:2:105",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "710:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "710:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "689:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "689:29:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "720:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "685:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "685:40:105"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "677:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "582:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "593:4:105",
                "type": ""
              }
            ],
            "src": "545:186:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "830:708:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "876:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "885:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "888:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "878:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "878:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "878:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "851:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "860:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "847:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "847:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "872:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "843:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "843:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "840:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "901:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "927:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "914:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "914:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "905:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "969:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "946:22:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "946:29:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "946:29:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "984:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "994:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "984:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1008:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1039:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1050:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1035:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1035:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1022:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1022:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1012:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1097:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1106:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1109:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1099:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1099:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1099:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1069:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1077:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1066:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1066:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1063:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1122:32:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1136:9:105"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1147:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1132:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1132:22:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1126:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1202:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1211:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1214:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1204:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1204:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1204:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1181:2:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1185:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1177:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1177:13:105"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1192:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1173:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1173:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1166:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1166:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1163:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1227:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1250:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1237:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1237:16:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "1231:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1262:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "1319:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "1291:27:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1291:31:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "1275:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1275:48:105"
                  },
                  "variables": [
                    {
                      "name": "array",
                      "nodeType": "YulTypedName",
                      "src": "1266:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "1339:5:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1346:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1332:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1332:17:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1332:17:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1395:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1404:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1407:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1397:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1397:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1397:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1372:2:105"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "1376:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1368:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1368:11:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1381:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1364:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1364:20:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1386:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1361:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1361:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1358:53:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "1437:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1444:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1433:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1433:14:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "1453:2:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1457:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1449:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1449:11:105"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1462:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "1420:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1420:45:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1420:45:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "1489:5:105"
                              },
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "1496:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1485:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1485:14:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1501:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1481:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1481:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1506:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1474:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1474:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1474:34:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1517:15:105",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "1527:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1517:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "788:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "799:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "811:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "819:6:105",
                "type": ""
              }
            ],
            "src": "736:802:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1588:86:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1652:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1661:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1664:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1654:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1654:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1654:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1611:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1622:5:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1637:3:105",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1642:1:105",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1633:3:105"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1633:11:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1646:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:19:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1618:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1618:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1608:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1608:42:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1601:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1601:50:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1598:70:105"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1577:5:105",
                "type": ""
              }
            ],
            "src": "1543:131:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1764:299:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1810:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1819:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1822:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1812:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1812:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1812:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1785:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1794:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1781:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1781:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1806:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1777:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1777:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "1774:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1835:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1861:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1848:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1848:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1839:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1903:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "1880:22:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1880:29:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1880:29:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1918:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1928:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1918:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1942:47:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1974:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1985:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1970:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1970:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1957:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1957:32:105"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "1946:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2023:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1998:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1998:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1998:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2040:17:105",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2050:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2040:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1722:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1733:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1745:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1753:6:105",
                "type": ""
              }
            ],
            "src": "1679:384:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2140:275:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2189:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2198:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2201:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2191:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2191:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2191:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2168:6:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2176:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2164:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2164:17:105"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2183:3:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2160:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2160:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2153:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2153:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2150:55:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2214:30:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2237:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2224:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2224:20:105"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "2214:6:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2287:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2296:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2299:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2289:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2289:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2289:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2259:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2267:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2256:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2256:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2253:50:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2312:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2328:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2336:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2324:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2324:17:105"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "2312:8:105"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2393:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2402:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2405:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2395:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2395:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2395:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2364:6:105"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2372:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2360:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2360:19:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2381:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2356:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2356:30:105"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2388:3:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2353:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2353:39:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2350:59:105"
                }
              ]
            },
            "name": "abi_decode_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2103:6:105",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2111:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "2119:8:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2129:6:105",
                "type": ""
              }
            ],
            "src": "2068:347:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2558:612:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2605:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2614:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2617:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2607:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2607:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2607:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2579:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2588:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2575:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2575:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2600:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2571:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2571:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2568:53:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2630:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2656:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2643:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2643:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2634:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2698:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "2675:22:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2675:29:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2675:29:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2713:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2723:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2713:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2737:47:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2769:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2780:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2765:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2765:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2752:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2752:32:105"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "2741:7:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2818:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2793:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2793:33:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2793:33:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2835:17:105",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2845:7:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2835:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2861:42:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2888:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2899:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2884:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2884:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2871:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2871:32:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2861:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2912:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2943:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2954:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2939:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2939:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2926:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2926:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2916:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3001:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3010:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3013:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3003:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3003:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3003:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2973:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2981:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2970:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2970:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "2967:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3026:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3082:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3093:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3078:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3078:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3102:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3052:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3052:58:105"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "3030:8:105",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "3040:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3119:18:105",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "3129:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3119:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3146:18:105",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "3156:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "3146:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8t_addresst_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2492:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2503:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2515:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2523:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2531:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2539:6:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "2547:6:105",
                "type": ""
              }
            ],
            "src": "2420:750:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3293:102:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3303:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3315:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3326:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3311:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3311:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3303:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3345:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3360:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3376:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3381:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "3372:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3372:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3385:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3368:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3368:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3356:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3356:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3338:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3338:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3338:51:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IBridge_$18146__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3262:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3273:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3284:4:105",
                "type": ""
              }
            ],
            "src": "3175:220:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3505:436:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3551:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3560:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3563:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3553:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3553:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3553:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3526:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3535:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3522:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3522:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3547:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3518:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3518:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3515:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3576:36:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3602:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3589:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3589:23:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3580:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3644:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "3621:22:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3621:29:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3621:29:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3659:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3669:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3659:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3683:46:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3714:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3725:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3710:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3710:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3697:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3697:32:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3687:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3772:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3781:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3784:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3774:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3774:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3774:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3744:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3752:18:105",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3741:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3741:30:105"
                  },
                  "nodeType": "YulIf",
                  "src": "3738:50:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3797:84:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3853:9:105"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3864:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3849:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3849:22:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3873:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3823:25:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3823:58:105"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "3801:8:105",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "3811:8:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3890:18:105",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "3900:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3890:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3917:18:105",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "3927:8:105"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3917:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3455:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3466:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3478:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3486:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3494:6:105",
                "type": ""
              }
            ],
            "src": "3400:541:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4047:76:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4057:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4069:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4080:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4065:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4065:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4057:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4099:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4110:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4092:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4092:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4092:25:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4016:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4027:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4038:4:105",
                "type": ""
              }
            ],
            "src": "3946:177:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4229:76:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4239:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4251:9:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4262:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4247:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4247:18:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4239:4:105"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4281:9:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4292:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4274:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4274:25:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4274:25:105"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4198:9:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4209:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4220:4:105",
                "type": ""
              }
            ],
            "src": "4128:177:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4391:170:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4437:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4446:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4449:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4439:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4439:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4439:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4412:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4421:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4408:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4408:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4433:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4404:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4404:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4401:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4462:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4481:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4475:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4475:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4466:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4525:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4500:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4500:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4500:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4540:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4550:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4540:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4357:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4368:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4380:6:105",
                "type": ""
              }
            ],
            "src": "4310:251:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4645:168:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4691:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4700:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4703:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4693:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4693:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4693:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4666:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4675:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4662:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4662:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4687:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4658:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4658:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "4655:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4716:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4735:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4729:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4729:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4720:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4777:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "4754:22:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4754:29:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4754:29:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4792:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4802:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4792:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4611:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4622:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4634:6:105",
                "type": ""
              }
            ],
            "src": "4566:247:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4871:205:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4881:10:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4890:1:105",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "4885:1:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4950:63:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4975:3:105"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "4980:1:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "4971:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4971:11:105"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "4994:3:105"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "4999:1:105"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "4990:3:105"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4990:11:105"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "4984:5:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4984:18:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4964:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4964:39:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4964:39:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "4911:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4914:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4908:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4908:13:105"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "4922:19:105",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4924:15:105",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "4933:1:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4936:2:105",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4929:3:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4929:10:105"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "4924:1:105"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "4904:3:105",
                    "statements": []
                  },
                  "src": "4900:113:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5039:31:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "5052:3:105"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "5057:6:105"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "5048:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5048:16:105"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5066:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5041:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5041:27:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5041:27:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "5028:1:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5031:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5025:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5025:13:105"
                  },
                  "nodeType": "YulIf",
                  "src": "5022:48:105"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "4849:3:105",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "4854:3:105",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "4859:6:105",
                "type": ""
              }
            ],
            "src": "4818:258:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5246:181:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5263:3:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5268:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5256:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5256:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5256:19:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5284:27:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "5304:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5298:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5298:13:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5288:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5346:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5354:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5342:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5342:15:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5363:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5368:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5359:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5359:12:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5373:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "5320:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5320:60:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5320:60:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5389:32:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5404:3:105"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "5409:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5400:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5400:16:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5418:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5396:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5396:25:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "5389:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5214:3:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5219:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5227:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "5238:3:105",
                "type": ""
              }
            ],
            "src": "5081:346:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5481:208:105",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5491:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5511:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5505:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5505:12:105"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5495:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5533:3:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5538:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5526:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5526:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5526:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5580:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5587:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5576:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5576:16:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5598:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5603:4:105",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5594:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5594:14:105"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5610:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "5554:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5554:63:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5554:63:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5626:57:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5641:3:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5654:6:105"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5662:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5650:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5650:15:105"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5671:2:105",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "5667:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5667:7:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "5646:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5646:29:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5637:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5637:39:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5678:4:105",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5633:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5633:50:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "5626:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5458:5:105",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5465:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "5473:3:105",
                "type": ""
              }
            ],
            "src": "5432:257:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6017:445:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6034:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "6049:6:105"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6065:3:105",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6070:1:105",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "6061:3:105"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6061:11:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6074:1:105",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "6057:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6057:19:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "6045:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6045:32:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6027:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6027:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6027:51:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6098:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6109:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6094:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6094:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "6118:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6126:4:105",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "6114:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6114:17:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6087:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6087:45:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6087:45:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6152:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6163:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6148:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6148:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "6172:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6180:4:105",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "6168:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6168:17:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6141:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6141:45:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6141:45:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6206:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6217:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6202:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6202:18:105"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "6222:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6195:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6195:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6195:34:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6249:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6260:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6245:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6245:19:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6266:3:105",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6238:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6238:32:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6238:32:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6279:59:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "6310:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6322:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6333:3:105",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6318:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6318:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6293:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6293:45:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "6283:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6358:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6369:3:105",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6354:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6354:19:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "6379:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6387:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6375:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6375:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6347:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6347:51:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6347:51:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "6414:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6422:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6407:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6407:17:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6407:17:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6433:23:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "6445:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6453:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6441:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6441:15:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6433:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5954:9:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "5965:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5973:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5981:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5989:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5997:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6008:4:105",
                "type": ""
              }
            ],
            "src": "5694:768:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6565:214:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6611:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6620:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6623:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6613:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6613:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6613:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6586:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6595:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6582:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6582:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6607:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6578:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6578:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6575:52:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6636:26:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6652:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6646:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6646:16:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6636:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6671:38:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6694:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6705:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6690:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6690:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6684:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6684:25:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6675:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6743:5:105"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "6718:24:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6718:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6718:31:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6758:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6768:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6758:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6523:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6534:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6546:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6554:6:105",
                "type": ""
              }
            ],
            "src": "6467:312:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6833:173:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6863:111:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6884:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6891:3:105",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6896:10:105",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6887:3:105"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6887:20:105"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6877:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6877:31:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6877:31:105"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6928:1:105",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6931:4:105",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6921:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6921:15:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6921:15:105"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6956:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6959:4:105",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6949:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6949:15:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6949:15:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "6849:1:105"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "6852:1:105"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6846:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6846:8:105"
                  },
                  "nodeType": "YulIf",
                  "src": "6843:131:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6983:17:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "6995:1:105"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "6998:1:105"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "6991:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6991:9:105"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "6983:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "6815:1:105",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "6818:1:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "6824:4:105",
                "type": ""
              }
            ],
            "src": "6784:222:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7282:320:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7299:9:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "7314:6:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7322:4:105",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7310:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7310:17:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7292:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7292:36:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7292:36:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7348:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7359:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7344:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7344:18:105"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "7364:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7337:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7337:34:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7337:34:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7391:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7402:2:105",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7387:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7387:18:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7407:3:105",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7380:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7380:31:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7380:31:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7420:59:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "7451:6:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7463:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7474:3:105",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7459:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7459:19:105"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7434:16:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7434:45:105"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "7424:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7499:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7510:2:105",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7495:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7495:18:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "7519:6:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7527:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7515:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7515:22:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7488:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7488:50:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7488:50:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "7554:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7562:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7547:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7547:17:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7547:17:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7573:23:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "7585:6:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7593:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7581:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7581:15:105"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7573:4:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8_t_bytes32_t_bytes_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint8_t_bytes32_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7235:9:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7246:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7254:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7262:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7273:4:105",
                "type": ""
              }
            ],
            "src": "7011:591:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7713:698:105",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7759:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7768:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7771:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7761:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7761:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7761:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7734:7:105"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7743:9:105"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7730:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7730:23:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7755:2:105",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7726:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7726:32:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7723:52:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7784:29:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7803:9:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7797:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7797:16:105"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7788:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7822:28:105",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7832:18:105",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "7826:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7896:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7905:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7908:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7898:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7898:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7898:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "7872:5:105"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7883:5:105"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "7890:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "7879:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7879:14:105"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "7869:2:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7869:25:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "7862:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7862:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7859:53:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7921:15:105",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7931:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7921:6:105"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7945:39:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7969:9:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7980:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7965:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7965:18:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7959:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7959:25:105"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "7949:6:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8011:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8020:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8023:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8013:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8013:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8013:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7999:6:105"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8007:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7996:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7996:14:105"
                  },
                  "nodeType": "YulIf",
                  "src": "7993:34:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8036:32:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8050:9:105"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8061:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8046:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8046:22:105"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "8040:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8116:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8125:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8128:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8118:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8118:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8118:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "8095:2:105"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8099:4:105",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8091:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8091:13:105"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8106:7:105"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "8087:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8087:27:105"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8080:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8080:35:105"
                  },
                  "nodeType": "YulIf",
                  "src": "8077:55:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8141:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8157:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8151:5:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8151:9:105"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "8145:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8169:61:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "8226:2:105"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "8198:27:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8198:31:105"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8182:15:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8182:48:105"
                  },
                  "variables": [
                    {
                      "name": "array",
                      "nodeType": "YulTypedName",
                      "src": "8173:5:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "8246:5:105"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "8253:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8239:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8239:17:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8239:17:105"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8302:16:105",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8311:1:105",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8314:1:105",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8304:6:105"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8304:12:105"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8304:12:105"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "8279:2:105"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "8283:2:105"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8275:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8275:11:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8288:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8271:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8271:20:105"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8293:7:105"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8268:2:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8268:33:105"
                  },
                  "nodeType": "YulIf",
                  "src": "8265:53:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "8353:2:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8357:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8349:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8349:11:105"
                      },
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "8366:5:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8373:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8362:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8362:14:105"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "8378:2:105"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8327:21:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8327:54:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8327:54:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8390:15:105",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "8400:5:105"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8390:6:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint64t_bytes_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7671:9:105",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7682:7:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7694:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7702:6:105",
                "type": ""
              }
            ],
            "src": "7607:804:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8607:14:105",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8609:10:105",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "8616:3:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "8609:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8591:3:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8599:3:105",
                "type": ""
              }
            ],
            "src": "8416:205:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8773:147:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8790:3:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "8795:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8783:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8783:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8783:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "8822:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8827:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8818:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8818:12:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8840:2:105",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "8844:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8836:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8836:15:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8857:26:105",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "8853:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8853:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "8832:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8832:53:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8811:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8811:75:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8811:75:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8895:19:105",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8906:3:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8911:2:105",
                        "type": "",
                        "value": "52"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8902:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8902:12:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "8895:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_uint256_t_address__to_t_uint256_t_address__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8741:3:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8746:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8754:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8765:3:105",
                "type": ""
              }
            ],
            "src": "8626:294:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9184:330:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9201:3:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9206:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9194:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9194:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9194:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9233:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9238:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9229:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9229:12:105"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9251:2:105",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "9255:6:105"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "9247:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9247:15:105"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9268:26:105",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "9264:3:105"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9264:31:105"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "9243:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9243:53:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9222:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9222:75:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9222:75:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9317:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9322:2:105",
                            "type": "",
                            "value": "52"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9313:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9313:12:105"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9327:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9306:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9306:28:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9306:28:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9354:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9359:2:105",
                            "type": "",
                            "value": "84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9350:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9350:12:105"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "9364:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9343:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9343:28:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9343:28:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9397:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9402:3:105",
                            "type": "",
                            "value": "116"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9393:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9393:13:105"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "9408:6:105"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "9416:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "9380:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9380:43:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9380:43:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9432:36:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9450:3:105"
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulIdentifier",
                            "src": "9455:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9446:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9446:16:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9464:3:105",
                        "type": "",
                        "value": "116"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9442:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9442:26:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9436:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9484:2:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9488:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9477:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9477:13:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9477:13:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9499:9:105",
                  "value": {
                    "name": "_1",
                    "nodeType": "YulIdentifier",
                    "src": "9506:2:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9499:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_uint256_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_uint256_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9120:3:105",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "9125:6:105",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9133:6:105",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9141:6:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9149:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9157:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9165:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9176:3:105",
                "type": ""
              }
            ],
            "src": "8925:589:105"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9696:170:105",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9713:3:105"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9718:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9706:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9706:19:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9706:19:105"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9751:3:105"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9756:2:105",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9747:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9747:12:105"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "9761:6:105"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9769:6:105"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "9734:12:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9734:42:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9734:42:105"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9785:35:105",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9803:3:105"
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "9808:6:105"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9799:3:105"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9799:16:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9817:2:105",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9795:3:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9795:25:105"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9789:2:105",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9836:2:105"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9840:1:105",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9829:6:105"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9829:13:105"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9829:13:105"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9851:9:105",
                  "value": {
                    "name": "_1",
                    "nodeType": "YulIdentifier",
                    "src": "9858:2:105"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9851:3:105"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9656:3:105",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9661:6:105",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9669:6:105",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9677:6:105",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9688:3:105",
                "type": ""
              }
            ],
            "src": "9519:347:105"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_tuple_t_uint8t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := calldataload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), 0)\n        value1 := array\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_contract$_IBridge_$18146__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint8t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, 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_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 32), add(pos, 32), length)\n        end := add(add(pos, length), 32)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), and(value2, 0xff))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 192)\n        let tail_1 := abi_encode_bytes(value4, add(headStart, 192))\n        mstore(add(headStart, 160), sub(tail_1, headStart))\n        mstore(tail_1, 0)\n        tail := add(tail_1, 32)\n    }\n    function abi_decode_tuple_t_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        let value := mload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_uint8_t_bytes32_t_bytes_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint8_t_bytes32_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 128)\n        let tail_1 := abi_encode_bytes(value2, add(headStart, 128))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        mstore(tail_1, 0)\n        tail := add(tail_1, 32)\n    }\n    function abi_decode_tuple_t_uint64t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if iszero(eq(value, and(value, _1))) { revert(0, 0) }\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let array := allocate_memory(array_allocation_size_bytes(_3))\n        mstore(array, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(array, 32), _3)\n        value1 := array\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_packed_t_uint256_t_address__to_t_uint256_t_address__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 52)\n    }\n    function abi_encode_tuple_packed_t_uint256_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_uint256_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 52), value2)\n        mstore(add(pos, 84), value3)\n        calldatacopy(add(pos, 116), value4, value5)\n        let _1 := add(add(pos, value5), 116)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        calldatacopy(add(pos, 32), value1, value2)\n        let _1 := add(add(pos, value2), 32)\n        mstore(_1, 0)\n        end := _1\n    }\n}",
      "id": 105,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "147:4002:70:-:0;;;480:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;538:25:70;;;;;573:24;;147:4002;;14:351:105;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:105;;231:42;;221:70;;287:1;284;277:12;221:70;355:2;340:18;;;;334:25;310:5;;334:25;;-1:-1:-1;;;14:351:105:o;:::-;147:4002:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "147:4002:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:1332;;;;;;:::i;:::-;;:::i;:::-;;922:261;;;;;;:::i;:::-;;:::i;2288:424::-;;;;;;:::i;:::-;;:::i;181:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3356:32:105;;;3338:51;;3326:2;3311:18;181:32:70;;;;;;;;610:306;;;;;;:::i;:::-;;:::i;219:36::-;;;;;;;;;;;;;;;;;;4092:25:105;;;4080:2;4065:18;219:36:70;3946:177:105;2718:1332:70;2835:9;2831:64;;2858:37;;-1:-1:-1;;;2858:37:70;;2885:9;2858:37;;;4092:25:105;4065:18;;2858:37:70;;;;;;;;2831:64;2905:24;2932:7;-1:-1:-1;;;;;2932:19:70;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2905:48;;2964:11;2993:16;-1:-1:-1;;;;;2981:42:70;;3045:4;3064:7;-1:-1:-1;;;;;3064:17:70;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3097;3130:11;3172:9;3183:22;3155:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2981:276;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2963:294;;;3284:3;3272:9;:15;3268:59;;;3296:31;;-1:-1:-1;;;3296:31:70;;3317:9;3296:31;;;4092:25:105;4065:18;;3296:31:70;3946:177:105;3268:59:70;3337:22;3362:15;3374:3;3362:9;:15;:::i;:::-;3337:40;;3388:24;3445:14;3473:22;3415:90;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3415:90:70;;;;;;;;;;-1:-1:-1;;;3516:78:70;;3415:90;-1:-1:-1;;;;;;3516:7:70;:15;;;;3539:3;;3516:78;;3544:19;;3565:11;;3415:90;;3516:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3516:78:70;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3636:48:70;;-1:-1:-1;;;3636:48:70;;3672:11;3636:48;;;4092:25:105;3605:28:70;;3636:7;-1:-1:-1;;;;;3636:35:70;;;;4065:18:105;;3636:48:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3605:79;;3695:12;3713:20;-1:-1:-1;;;;;3713:25:70;3746:14;3713:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3694:71;;;3780:7;3775:42;;3796:21;;-1:-1:-1;;;3796:21:70;;;;;;;;;;;3775:42;3846:21;3881:12;;3877:167;;3923:45;;3931:10;;3955:8;;3923:45;;;;3955:8;3931:10;3923:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3909:59:70;;-1:-1:-1;;3877:167:70;2821:1229;;;;;;;2718:1332;;:::o;922:261::-;1017:24;1082:2;1099:9;1044:74;;;;;;;;8783:19:105;;;8840:2;8836:15;-1:-1:-1;;8832:53:105;8827:2;8818:12;;8811:75;8911:2;8902:12;;8626:294;1044:74:70;;;;;;;;;;;;;1017:101;;1128:48;1143:19;1164:11;1128:14;:48::i;:::-;1007:176;922:261;;:::o;2288:424::-;2435:8;2431:30;;2452:9;;-1:-1:-1;;;2452:9:70;;;;;;;;;;;2431:30;2498:149;;2471:24;;2498:149;;2536:2;;2553:9;;2576:3;;2601:7;;;;;;2498:149;;;:::i;:::-;;;;;;;;;;;;;2471:176;;2657:48;2672:19;2693:11;2657:14;:48::i;:::-;2421:291;2288:424;;;;;:::o;610:306::-;742:109;;715:24;;742:109;;786:16;;;;;;742:109;;;:::i;:::-;;;;;;;;;;;;;715:136;;861:48;876:19;897:11;861:14;:48::i;:::-;705:211;610:306;;;:::o;14:114:105:-;98:4;91:5;87:16;80:5;77:27;67:55;;118:1;115;108:12;67:55;14:114;:::o;133:127::-;194:10;189:3;185:20;182:1;175:31;225:4;222:1;215:15;249:4;246:1;239:15;265:275;336:2;330:9;401:2;382:13;;-1:-1:-1;;378:27:105;366:40;;436:18;421:34;;457:22;;;418:62;415:88;;;483:18;;:::i;:::-;519:2;512:22;265:275;;-1:-1:-1;265:275:105:o;545:186::-;593:4;626:18;618:6;615:30;612:56;;;648:18;;:::i;:::-;-1:-1:-1;714:2:105;693:15;-1:-1:-1;;689:29:105;720:4;685:40;;545:186::o;736:802::-;811:6;819;872:2;860:9;851:7;847:23;843:32;840:52;;;888:1;885;878:12;840:52;927:9;914:23;946:29;969:5;946:29;:::i;:::-;994:5;-1:-1:-1;1050:2:105;1035:18;;1022:32;1077:18;1066:30;;1063:50;;;1109:1;1106;1099:12;1063:50;1132:22;;1185:4;1177:13;;1173:27;-1:-1:-1;1163:55:105;;1214:1;1211;1204:12;1163:55;1250:2;1237:16;1275:48;1291:31;1319:2;1291:31;:::i;:::-;1275:48;:::i;:::-;1346:2;1339:5;1332:17;1386:7;1381:2;1376;1372;1368:11;1364:20;1361:33;1358:53;;;1407:1;1404;1397:12;1358:53;1462:2;1457;1453;1449:11;1444:2;1437:5;1433:14;1420:45;1506:1;1501:2;1496;1489:5;1485:14;1481:23;1474:34;1527:5;1517:15;;;;;736:802;;;;;:::o;1543:131::-;-1:-1:-1;;;;;1618:31:105;;1608:42;;1598:70;;1664:1;1661;1654:12;1679:384;1745:6;1753;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:29;1903:5;1880:29;:::i;:::-;1928:5;-1:-1:-1;1985:2:105;1970:18;;1957:32;1998:33;1957:32;1998:33;:::i;:::-;2050:7;2040:17;;;1679:384;;;;;:::o;2068:347::-;2119:8;2129:6;2183:3;2176:4;2168:6;2164:17;2160:27;2150:55;;2201:1;2198;2191:12;2150:55;-1:-1:-1;2224:20:105;;2267:18;2256:30;;2253:50;;;2299:1;2296;2289:12;2253:50;2336:4;2328:6;2324:17;2312:29;;2388:3;2381:4;2372:6;2364;2360:19;2356:30;2353:39;2350:59;;;2405:1;2402;2395:12;2350:59;2068:347;;;;;:::o;2420:750::-;2515:6;2523;2531;2539;2547;2600:3;2588:9;2579:7;2575:23;2571:33;2568:53;;;2617:1;2614;2607:12;2568:53;2656:9;2643:23;2675:29;2698:5;2675:29;:::i;:::-;2723:5;-1:-1:-1;2780:2:105;2765:18;;2752:32;2793:33;2752:32;2793:33;:::i;:::-;2845:7;-1:-1:-1;2899:2:105;2884:18;;2871:32;;-1:-1:-1;2954:2:105;2939:18;;2926:32;2981:18;2970:30;;2967:50;;;3013:1;3010;3003:12;2967:50;3052:58;3102:7;3093:6;3082:9;3078:22;3052:58;:::i;:::-;2420:750;;;;-1:-1:-1;2420:750:105;;-1:-1:-1;3129:8:105;;3026:84;2420:750;-1:-1:-1;;;2420:750:105:o;3400:541::-;3478:6;3486;3494;3547:2;3535:9;3526:7;3522:23;3518:32;3515:52;;;3563:1;3560;3553:12;3515:52;3602:9;3589:23;3621:29;3644:5;3621:29;:::i;:::-;3669:5;-1:-1:-1;3725:2:105;3710:18;;3697:32;3752:18;3741:30;;3738:50;;;3784:1;3781;3774:12;3738:50;3823:58;3873:7;3864:6;3853:9;3849:22;3823:58;:::i;:::-;3400:541;;3900:8;;-1:-1:-1;3797:84:105;;-1:-1:-1;;;;3400:541:105:o;4310:251::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:52;;;4449:1;4446;4439:12;4401:52;4481:9;4475:16;4500:31;4525:5;4500:31;:::i;:::-;4550:5;4310:251;-1:-1:-1;;;4310:251:105:o;4566:247::-;4634:6;4687:2;4675:9;4666:7;4662:23;4658:32;4655:52;;;4703:1;4700;4693:12;4655:52;4735:9;4729:16;4754:29;4777:5;4754:29;:::i;4818:258::-;4890:1;4900:113;4914:6;4911:1;4908:13;4900:113;;;4990:11;;;4984:18;4971:11;;;4964:39;4936:2;4929:10;4900:113;;;5031:6;5028:1;5025:13;5022:48;;;-1:-1:-1;;5066:1:105;5048:16;;5041:27;4818:258::o;5081:346::-;5268:6;5263:3;5256:19;5238:3;5304:6;5298:13;5320:60;5373:6;5368:2;5363:3;5359:12;5354:2;5346:6;5342:15;5320:60;:::i;:::-;5400:16;;;;5418:2;5396:25;;5081:346;-1:-1:-1;;;5081:346:105:o;5432:257::-;5473:3;5511:5;5505:12;5538:6;5533:3;5526:19;5554:63;5610:6;5603:4;5598:3;5594:14;5587:4;5580:5;5576:16;5554:63;:::i;:::-;5671:2;5650:15;-1:-1:-1;;5646:29:105;5637:39;;;;5678:4;5633:50;;5432:257;-1:-1:-1;;5432:257:105:o;5694:768::-;6074:1;6070;6065:3;6061:11;6057:19;6049:6;6045:32;6034:9;6027:51;6126:4;6118:6;6114:17;6109:2;6098:9;6094:18;6087:45;6180:4;6172:6;6168:17;6163:2;6152:9;6148:18;6141:45;6222:6;6217:2;6206:9;6202:18;6195:34;6266:3;6260;6249:9;6245:19;6238:32;6008:4;6293:45;6333:3;6322:9;6318:19;6310:6;6293:45;:::i;:::-;6387:9;6379:6;6375:22;6369:3;6358:9;6354:19;6347:51;6422:1;6414:6;6407:17;6453:2;6445:6;6441:15;6433:23;;;5694:768;;;;;;;;:::o;6467:312::-;6546:6;6554;6607:2;6595:9;6586:7;6582:23;6578:32;6575:52;;;6623:1;6620;6613:12;6575:52;6652:9;6646:16;6636:26;;6705:2;6694:9;6690:18;6684:25;6718:31;6743:5;6718:31;:::i;6784:222::-;6824:4;6852:1;6849;6846:8;6843:131;;;6896:10;6891:3;6887:20;6884:1;6877:31;6931:4;6928:1;6921:15;6959:4;6956:1;6949:15;6843:131;-1:-1:-1;6991:9:105;;6784:222::o;7011:591::-;7322:4;7314:6;7310:17;7299:9;7292:36;7364:6;7359:2;7348:9;7344:18;7337:34;7407:3;7402:2;7391:9;7387:18;7380:31;7273:4;7434:45;7474:3;7463:9;7459:19;7451:6;7434:45;:::i;:::-;7527:9;7519:6;7515:22;7510:2;7499:9;7495:18;7488:50;7562:1;7554:6;7547:17;7593:2;7585:6;7581:15;7573:23;;;7011:591;;;;;;:::o;7607:804::-;7694:6;7702;7755:2;7743:9;7734:7;7730:23;7726:32;7723:52;;;7771:1;7768;7761:12;7723:52;7803:9;7797:16;7832:18;7890:2;7883:5;7879:14;7872:5;7869:25;7859:53;;7908:1;7905;7898:12;7859:53;7980:2;7965:18;;7959:25;7931:5;;-1:-1:-1;7996:14:105;;;7993:34;;;8023:1;8020;8013:12;7993:34;-1:-1:-1;8046:22:105;;8099:4;8091:13;;8087:27;-1:-1:-1;8077:55:105;;8128:1;8125;8118:12;8077:55;8157:2;8151:9;8182:48;8198:31;8226:2;8198:31;:::i;8182:48::-;8253:2;8246:5;8239:17;8293:7;8288:2;8283;8279;8275:11;8271:20;8268:33;8265:53;;;8314:1;8311;8304:12;8265:53;8327:54;8378:2;8373;8366:5;8362:14;8357:2;8353;8349:11;8327:54;:::i;:::-;8400:5;8390:15;;;;;7607:804;;;;;:::o;8925:589::-;9206:6;9201:3;9194:19;9268:26;9264:31;9255:6;9251:2;9247:15;9243:53;9238:2;9233:3;9229:12;9222:75;9327:6;9322:2;9317:3;9313:12;9306:28;9364:6;9359:2;9354:3;9350:12;9343:28;9416:6;9408;9402:3;9397;9393:13;9380:43;9176:3;9446:16;;9464:3;9442:26;9477:13;;;9442:26;8925:589;-1:-1:-1;;;;;8925:589:105:o;9519:347::-;9718:6;9713:3;9706:19;9769:6;9761;9756:2;9751:3;9747:12;9734:42;9688:3;9799:16;;9817:2;9795:25;9829:13;;;9795:25;9519:347;-1:-1:-1;;9519:347:105:o",
  "source": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.11;\n\nimport \"../../interfaces/IBridge.sol\";\nimport \"../../interfaces/IFeeHandler.sol\";\n\n\ncontract NativeTokenAdapter {\n    IBridge public immutable _bridge;\n    bytes32 public immutable _resourceID;\n\n    error SenderNotAdmin();\n    error InsufficientMsgValueAmount(uint256 amount);\n    error MsgValueLowerThanFee(uint256 amount);\n    error InsufficientBalance();\n    error FailedFundsTransfer();\n    error ZeroGas();\n\n    constructor(address bridge, bytes32 resourceID) {\n        _bridge = IBridge(bridge);\n        _resourceID = resourceID;\n    }\n\n    function deposit(uint8 destinationDomainID, string calldata recipientAddress) external payable {\n        bytes memory depositData = abi.encodePacked(\n            uint256(bytes(recipientAddress).length),\n            recipientAddress\n        );\n        depositGeneral(destinationDomainID, depositData);\n    }\n\n    function depositToEVM(uint8 destinationDomainID, address recipient) external payable {\n        bytes memory depositData = abi.encodePacked(\n            uint256(20),\n            recipient\n        );\n        depositGeneral(destinationDomainID, depositData);\n    }\n\n    /**\n        @notice Makes a native token deposit with an included message.\n        @param destinationDomainID ID of destination chain.\n        @param recipient The destination chain contract address that implements the ISygmaMessageReceiver interface.\n                         If the recipient is set to zero address then it will be replaced on the destination with\n                         the address of the DefaultMessageReceiver which is a generic ISygmaMessageReceiver implementation.\n        @param gas The amount of gas needed to successfully execute the call to recipient on the destination. Fee amount is\n                   directly affected by this value.\n        @param message Arbitrary encoded bytes array that will be passed as the third argument in the\n                       ISygmaMessageReceiver(recipient).handleSygmaMessage(_, _, message) call. If you intend to use the\n                       DefaultMessageReceiver, make sure to encode the message to comply with the\n                       DefaultMessageReceiver.handleSygmaMessage() message decoding implementation.\n     */\n    function depositToEVMWithMessage(uint8 destinationDomainID, address recipient, uint256 gas, bytes calldata message) external payable {\n        if (gas == 0) revert ZeroGas();\n        bytes memory depositData = abi.encodePacked(\n            uint256(20),\n            recipient,\n            gas,\n            uint256(message.length),\n            message\n        );\n        depositGeneral(destinationDomainID, depositData);\n    }\n\n    function depositGeneral(uint8 destinationDomainID, bytes memory depositDataAfterAmount) public payable {\n        if (msg.value == 0) revert InsufficientMsgValueAmount(msg.value);\n        address feeHandlerRouter = _bridge._feeHandler();\n        (uint256 fee, ) = IFeeHandler(feeHandlerRouter).calculateFee(\n            address(this),\n            _bridge._domainID(),\n            destinationDomainID,\n            _resourceID,\n            abi.encodePacked(msg.value, depositDataAfterAmount),\n            \"\"  // feeData - not parsed\n        );\n\n        if (msg.value < fee) revert MsgValueLowerThanFee(msg.value);\n        uint256 transferAmount = msg.value - fee;\n\n        bytes memory depositData = abi.encodePacked(\n            transferAmount,\n            depositDataAfterAmount\n        );\n\n        _bridge.deposit{value: fee}(destinationDomainID, _resourceID, depositData, \"\");\n\n        address nativeHandlerAddress = _bridge._resourceIDToHandlerAddress(_resourceID);\n        (bool success, ) = nativeHandlerAddress.call{value: transferAmount}(\"\");\n        if (!success) revert FailedFundsTransfer();\n        uint256 leftover = address(this).balance;\n        if (leftover > 0) {\n            (success, ) = payable(msg.sender).call{value: leftover}(\"\");\n            // Do not revert if sender does not want to receive.\n        }\n    }\n\n    // For an unlikely case when part of the fee is returned.\n    receive() external payable {}\n}\n",
  "sourcePath": "/home/runner/work/sygma-solidity/sygma-solidity/contracts/adapters/nativeTokens/NativeTokenAdapter.sol",
  "ast": {
    "absolutePath": "project:/contracts/adapters/nativeTokens/NativeTokenAdapter.sol",
    "exportedSymbols": {
      "IBridge": [
        18146
      ],
      "IFeeHandler": [
        18265
      ],
      "NativeTokenAdapter": [
        12678
      ]
    },
    "id": 12679,
    "license": "BUSL-1.1",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12404,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:24:70"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IBridge.sol",
        "file": "../../interfaces/IBridge.sol",
        "id": 12405,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 12679,
        "sourceUnit": 18147,
        "src": "63:38:70",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IFeeHandler.sol",
        "file": "../../interfaces/IFeeHandler.sol",
        "id": 12406,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 12679,
        "sourceUnit": 18266,
        "src": "102:42:70",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "NativeTokenAdapter",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 12678,
        "linearizedBaseContracts": [
          12678
        ],
        "name": "NativeTokenAdapter",
        "nameLocation": "156:18:70",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "c43e5f7d",
            "id": 12409,
            "mutability": "immutable",
            "name": "_bridge",
            "nameLocation": "206:7:70",
            "nodeType": "VariableDeclaration",
            "scope": 12678,
            "src": "181:32:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IBridge_$18146",
              "typeString": "contract IBridge"
            },
            "typeName": {
              "id": 12408,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 12407,
                "name": "IBridge",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 18146,
                "src": "181:7:70"
              },
              "referencedDeclaration": 18146,
              "src": "181:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IBridge_$18146",
                "typeString": "contract IBridge"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "f8ad7cc7",
            "id": 12411,
            "mutability": "immutable",
            "name": "_resourceID",
            "nameLocation": "244:11:70",
            "nodeType": "VariableDeclaration",
            "scope": 12678,
            "src": "219:36:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12410,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "219:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 12413,
            "name": "SenderNotAdmin",
            "nameLocation": "268:14:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "282:2:70"
            },
            "src": "262:23:70"
          },
          {
            "id": 12417,
            "name": "InsufficientMsgValueAmount",
            "nameLocation": "296:26:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12415,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "331:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12417,
                  "src": "323:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "322:16:70"
            },
            "src": "290:49:70"
          },
          {
            "id": 12421,
            "name": "MsgValueLowerThanFee",
            "nameLocation": "350:20:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12419,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "379:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12421,
                  "src": "371:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12418,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "370:16:70"
            },
            "src": "344:43:70"
          },
          {
            "id": 12423,
            "name": "InsufficientBalance",
            "nameLocation": "398:19:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "417:2:70"
            },
            "src": "392:28:70"
          },
          {
            "id": 12425,
            "name": "FailedFundsTransfer",
            "nameLocation": "431:19:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "450:2:70"
            },
            "src": "425:28:70"
          },
          {
            "id": 12427,
            "name": "ZeroGas",
            "nameLocation": "464:7:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12426,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "471:2:70"
            },
            "src": "458:16:70"
          },
          {
            "body": {
              "id": 12444,
              "nodeType": "Block",
              "src": "528:76:70",
              "statements": [
                {
                  "expression": {
                    "id": 12438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 12434,
                      "name": "_bridge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12409,
                      "src": "538:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBridge_$18146",
                        "typeString": "contract IBridge"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 12436,
                          "name": "bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12429,
                          "src": "556:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 12435,
                        "name": "IBridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18146,
                        "src": "548:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IBridge_$18146_$",
                          "typeString": "type(contract IBridge)"
                        }
                      },
                      "id": 12437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "548:15:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBridge_$18146",
                        "typeString": "contract IBridge"
                      }
                    },
                    "src": "538:25:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBridge_$18146",
                      "typeString": "contract IBridge"
                    }
                  },
                  "id": 12439,
                  "nodeType": "ExpressionStatement",
                  "src": "538:25:70"
                },
                {
                  "expression": {
                    "id": 12442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 12440,
                      "name": "_resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12411,
                      "src": "573:11:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 12441,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12431,
                      "src": "587:10:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "573:24:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12443,
                  "nodeType": "ExpressionStatement",
                  "src": "573:24:70"
                }
              ]
            },
            "id": 12445,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12429,
                  "mutability": "mutable",
                  "name": "bridge",
                  "nameLocation": "500:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12445,
                  "src": "492:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12428,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "492:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12431,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "516:10:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12445,
                  "src": "508:18:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12430,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "508:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "491:36:70"
            },
            "returnParameters": {
              "id": 12433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "528:0:70"
            },
            "scope": 12678,
            "src": "480:124:70",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12472,
              "nodeType": "Block",
              "src": "705:211:70",
              "statements": [
                {
                  "assignments": [
                    12453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12453,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "728:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12472,
                      "src": "715:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12452,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "715:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12466,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 12460,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12449,
                                  "src": "786:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 12459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "780:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 12458,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "780:5:70",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "780:23:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 12462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "780:30:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "772:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12456,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "772:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "772:39:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12464,
                        "name": "recipientAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12449,
                        "src": "825:16:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "expression": {
                        "id": 12454,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "742:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "742:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "742:109:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "715:136:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12468,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12447,
                        "src": "876:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12469,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12453,
                        "src": "897:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12467,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "861:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "861:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12471,
                  "nodeType": "ExpressionStatement",
                  "src": "861:48:70"
                }
              ]
            },
            "functionSelector": "d8ca12b2",
            "id": 12473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "619:7:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12447,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "633:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12473,
                  "src": "627:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12446,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12449,
                  "mutability": "mutable",
                  "name": "recipientAddress",
                  "nameLocation": "670:16:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12473,
                  "src": "654:32:70",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12448,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:6:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "626:61:70"
            },
            "returnParameters": {
              "id": 12451,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "705:0:70"
            },
            "scope": 12678,
            "src": "610:306:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12496,
              "nodeType": "Block",
              "src": "1007:176:70",
              "statements": [
                {
                  "assignments": [
                    12481
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12481,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "1030:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12496,
                      "src": "1017:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12480,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1017:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12490,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "3230",
                            "id": 12486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1082:2:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "id": 12485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1074:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12484,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1074:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1074:11:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12488,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12477,
                        "src": "1099:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 12482,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1044:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "1044:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1044:74:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1017:101:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12492,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12475,
                        "src": "1143:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12493,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12481,
                        "src": "1164:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12491,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "1128:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1128:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12495,
                  "nodeType": "ExpressionStatement",
                  "src": "1128:48:70"
                }
              ]
            },
            "functionSelector": "a24b407c",
            "id": 12497,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositToEVM",
            "nameLocation": "931:12:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12475,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "950:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12497,
                  "src": "944:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12474,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "944:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12477,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "979:9:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12497,
                  "src": "971:17:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12476,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "943:46:70"
            },
            "returnParameters": {
              "id": 12479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1007:0:70"
            },
            "scope": 12678,
            "src": "922:261:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12539,
              "nodeType": "Block",
              "src": "2421:291:70",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 12509,
                      "name": "gas",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12504,
                      "src": "2435:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2442:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2435:8:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12515,
                  "nodeType": "IfStatement",
                  "src": "2431:30:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 12512,
                        "name": "ZeroGas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12427,
                        "src": "2452:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2452:9:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12514,
                    "nodeType": "RevertStatement",
                    "src": "2445:16:70"
                  }
                },
                {
                  "assignments": [
                    12517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12517,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "2484:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12539,
                      "src": "2471:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12516,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2471:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12533,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "3230",
                            "id": 12522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2536:2:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "id": 12521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2528:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12520,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2528:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2528:11:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12524,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12502,
                        "src": "2553:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 12525,
                        "name": "gas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12504,
                        "src": "2576:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 12528,
                              "name": "message",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12506,
                              "src": "2601:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 12529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2601:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2593:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12526,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2593:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2593:23:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12531,
                        "name": "message",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12506,
                        "src": "2630:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 12518,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2498:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "2498:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2498:149:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2471:176:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12535,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12500,
                        "src": "2672:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12536,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12517,
                        "src": "2693:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12534,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "2657:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2657:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12538,
                  "nodeType": "ExpressionStatement",
                  "src": "2657:48:70"
                }
              ]
            },
            "documentation": {
              "id": 12498,
              "nodeType": "StructuredDocumentation",
              "src": "1189:1094:70",
              "text": "@notice Makes a native token deposit with an included message.\n@param destinationDomainID ID of destination chain.\n@param recipient The destination chain contract address that implements the ISygmaMessageReceiver interface.\nIf the recipient is set to zero address then it will be replaced on the destination with\nthe address of the DefaultMessageReceiver which is a generic ISygmaMessageReceiver implementation.\n@param gas The amount of gas needed to successfully execute the call to recipient on the destination. Fee amount is\ndirectly affected by this value.\n@param message Arbitrary encoded bytes array that will be passed as the third argument in the\nISygmaMessageReceiver(recipient).handleSygmaMessage(_, _, message) call. If you intend to use the\nDefaultMessageReceiver, make sure to encode the message to comply with the\nDefaultMessageReceiver.handleSygmaMessage() message decoding implementation."
            },
            "functionSelector": "c03bb908",
            "id": 12540,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositToEVMWithMessage",
            "nameLocation": "2297:23:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12500,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "2327:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2321:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12499,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2321:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12502,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2356:9:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2348:17:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12504,
                  "mutability": "mutable",
                  "name": "gas",
                  "nameLocation": "2375:3:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2367:11:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12503,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2367:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12506,
                  "mutability": "mutable",
                  "name": "message",
                  "nameLocation": "2395:7:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2380:22:70",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12505,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2380:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2320:83:70"
            },
            "returnParameters": {
              "id": 12508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2421:0:70"
            },
            "scope": 12678,
            "src": "2288:424:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12672,
              "nodeType": "Block",
              "src": "2821:1229:70",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12547,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "2835:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "2835:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2848:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2835:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12556,
                  "nodeType": "IfStatement",
                  "src": "2831:64:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 12552,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2885:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "2885:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 12551,
                        "name": "InsufficientMsgValueAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12417,
                        "src": "2858:26:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                          "typeString": "function (uint256) pure"
                        }
                      },
                      "id": 12554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2858:37:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12555,
                    "nodeType": "RevertStatement",
                    "src": "2851:44:70"
                  }
                },
                {
                  "assignments": [
                    12558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12558,
                      "mutability": "mutable",
                      "name": "feeHandlerRouter",
                      "nameLocation": "2913:16:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "2905:24:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12557,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2905:7:70",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12562,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 12559,
                        "name": "_bridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12409,
                        "src": "2932:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBridge_$18146",
                          "typeString": "contract IBridge"
                        }
                      },
                      "id": 12560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_feeHandler",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18121,
                      "src": "2932:19:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$",
                        "typeString": "function () external returns (address)"
                      }
                    },
                    "id": 12561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2932:21:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2905:48:70"
                },
                {
                  "assignments": [
                    12564,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12564,
                      "mutability": "mutable",
                      "name": "fee",
                      "nameLocation": "2972:3:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "2964:11:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12563,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2964:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 12586,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 12571,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "3045:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                              "typeString": "contract NativeTokenAdapter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                              "typeString": "contract NativeTokenAdapter"
                            }
                          ],
                          "id": 12570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3037:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12569,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3037:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3037:13:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 12573,
                            "name": "_bridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12409,
                            "src": "3064:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBridge_$18146",
                              "typeString": "contract IBridge"
                            }
                          },
                          "id": 12574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_domainID",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18115,
                          "src": "3064:17:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint8_$",
                            "typeString": "function () external returns (uint8)"
                          }
                        },
                        "id": 12575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3064:19:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12576,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12542,
                        "src": "3097:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12577,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3130:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 12580,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3172:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "3172:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 12582,
                            "name": "depositDataAfterAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12544,
                            "src": "3183:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 12578,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3155:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 12579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3155:16:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 12583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3155:51:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 12584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3220:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 12566,
                            "name": "feeHandlerRouter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12558,
                            "src": "2993:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12565,
                          "name": "IFeeHandler",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18265,
                          "src": "2981:11:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IFeeHandler_$18265_$",
                            "typeString": "type(contract IFeeHandler)"
                          }
                        },
                        "id": 12567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2981:29:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFeeHandler_$18265",
                          "typeString": "contract IFeeHandler"
                        }
                      },
                      "id": 12568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "calculateFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18258,
                      "src": "2981:42:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_address_$",
                        "typeString": "function (address,uint8,uint8,bytes32,bytes memory,bytes memory) view external returns (uint256,address)"
                      }
                    },
                    "id": 12585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2981:276:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                      "typeString": "tuple(uint256,address)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2963:294:70"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12587,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "3272:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "3272:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 12589,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12564,
                      "src": "3284:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3272:15:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12596,
                  "nodeType": "IfStatement",
                  "src": "3268:59:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 12592,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "3317:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "3317:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 12591,
                        "name": "MsgValueLowerThanFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12421,
                        "src": "3296:20:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                          "typeString": "function (uint256) pure"
                        }
                      },
                      "id": 12594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3296:31:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12595,
                    "nodeType": "RevertStatement",
                    "src": "3289:38:70"
                  }
                },
                {
                  "assignments": [
                    12598
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12598,
                      "mutability": "mutable",
                      "name": "transferAmount",
                      "nameLocation": "3345:14:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3337:22:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12597,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3337:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12603,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12599,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "3362:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "3362:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 12601,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12564,
                      "src": "3374:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3362:15:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3337:40:70"
                },
                {
                  "assignments": [
                    12605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12605,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "3401:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3388:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12604,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3388:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12611,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 12608,
                        "name": "transferAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12598,
                        "src": "3445:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12609,
                        "name": "depositDataAfterAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12544,
                        "src": "3473:22:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 12606,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "3415:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "3415:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3415:90:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3388:117:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12617,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12542,
                        "src": "3544:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12618,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3565:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 12619,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12605,
                        "src": "3578:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 12620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3591:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "expression": {
                          "id": 12612,
                          "name": "_bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12409,
                          "src": "3516:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBridge_$18146",
                            "typeString": "contract IBridge"
                          }
                        },
                        "id": 12614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "deposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18145,
                        "src": "3516:15:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint64_$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint8,bytes32,bytes memory,bytes memory) payable external returns (uint64,bytes memory)"
                        }
                      },
                      "id": 12616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 12615,
                          "name": "fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12564,
                          "src": "3539:3:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "3516:27:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint64_$_t_bytes_memory_ptr_$value",
                        "typeString": "function (uint8,bytes32,bytes memory,bytes memory) payable external returns (uint64,bytes memory)"
                      }
                    },
                    "id": 12621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3516:78:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint64_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint64,bytes memory)"
                    }
                  },
                  "id": 12622,
                  "nodeType": "ExpressionStatement",
                  "src": "3516:78:70"
                },
                {
                  "assignments": [
                    12624
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12624,
                      "mutability": "mutable",
                      "name": "nativeHandlerAddress",
                      "nameLocation": "3613:20:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3605:28:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12623,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3605:7:70",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12629,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 12627,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3672:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 12625,
                        "name": "_bridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12409,
                        "src": "3636:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBridge_$18146",
                          "typeString": "contract IBridge"
                        }
                      },
                      "id": 12626,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_resourceIDToHandlerAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18129,
                      "src": "3636:35:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 12628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3636:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3605:79:70"
                },
                {
                  "assignments": [
                    12631,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12631,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "3700:7:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3695:12:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12630,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3695:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 12638,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "",
                        "id": 12636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3762:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "expression": {
                          "id": 12632,
                          "name": "nativeHandlerAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12624,
                          "src": "3713:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "call",
                        "nodeType": "MemberAccess",
                        "src": "3713:25:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                        }
                      },
                      "id": 12635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 12634,
                          "name": "transferAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12598,
                          "src": "3746:14:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "3713:48:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 12637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3713:52:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3694:71:70"
                },
                {
                  "condition": {
                    "id": 12640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3779:8:70",
                    "subExpression": {
                      "id": 12639,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12631,
                      "src": "3780:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12644,
                  "nodeType": "IfStatement",
                  "src": "3775:42:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 12641,
                        "name": "FailedFundsTransfer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12425,
                        "src": "3796:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3796:21:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12643,
                    "nodeType": "RevertStatement",
                    "src": "3789:28:70"
                  }
                },
                {
                  "assignments": [
                    12646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12646,
                      "mutability": "mutable",
                      "name": "leftover",
                      "nameLocation": "3835:8:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3827:16:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12645,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3827:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12652,
                  "initialValue": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 12649,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967268,
                          "src": "3854:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                            "typeString": "contract NativeTokenAdapter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                            "typeString": "contract NativeTokenAdapter"
                          }
                        ],
                        "id": 12648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3846:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 12647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3846:7:70",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 12650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3846:13:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 12651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "balance",
                    "nodeType": "MemberAccess",
                    "src": "3846:21:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3827:40:70"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 12653,
                      "name": "leftover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12646,
                      "src": "3881:8:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3892:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3881:12:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12671,
                  "nodeType": "IfStatement",
                  "src": "3877:167:70",
                  "trueBody": {
                    "id": 12670,
                    "nodeType": "Block",
                    "src": "3895:149:70",
                    "statements": [
                      {
                        "expression": {
                          "id": 12668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 12656,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12631,
                                "src": "3910:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              null
                            ],
                            "id": 12657,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3909:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$__$",
                              "typeString": "tuple(bool,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "",
                                "id": 12666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3965:2:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 12660,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "3931:3:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12661,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3931:10:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 12659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3923:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 12658,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3923:8:70",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3923:19:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "id": 12663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "src": "3923:24:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 12665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "nodeType": "FunctionCallOptions",
                              "options": [
                                {
                                  "id": 12664,
                                  "name": "leftover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12646,
                                  "src": "3955:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "src": "3923:41:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 12667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3923:45:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "3909:59:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12669,
                        "nodeType": "ExpressionStatement",
                        "src": "3909:59:70"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "0929a2dc",
            "id": 12673,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositGeneral",
            "nameLocation": "2727:14:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12542,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "2748:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12673,
                  "src": "2742:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12541,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12544,
                  "mutability": "mutable",
                  "name": "depositDataAfterAmount",
                  "nameLocation": "2782:22:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12673,
                  "src": "2769:35:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12543,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2769:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2741:64:70"
            },
            "returnParameters": {
              "id": 12546,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2821:0:70"
            },
            "scope": 12678,
            "src": "2718:1332:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12676,
              "nodeType": "Block",
              "src": "4145:2:70",
              "statements": []
            },
            "id": 12677,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12674,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4125:2:70"
            },
            "returnParameters": {
              "id": 12675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4145:0:70"
            },
            "scope": 12678,
            "src": "4118:29:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 12679,
        "src": "147:4002:70",
        "usedErrors": [
          12413,
          12417,
          12421,
          12423,
          12425,
          12427
        ]
      }
    ],
    "src": "37:4113:70"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/adapters/nativeTokens/NativeTokenAdapter.sol",
    "exportedSymbols": {
      "IBridge": [
        18146
      ],
      "IFeeHandler": [
        18265
      ],
      "NativeTokenAdapter": [
        12678
      ]
    },
    "id": 12679,
    "license": "BUSL-1.1",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12404,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:24:70"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IBridge.sol",
        "file": "../../interfaces/IBridge.sol",
        "id": 12405,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 12679,
        "sourceUnit": 18147,
        "src": "63:38:70",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IFeeHandler.sol",
        "file": "../../interfaces/IFeeHandler.sol",
        "id": 12406,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 12679,
        "sourceUnit": 18266,
        "src": "102:42:70",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "NativeTokenAdapter",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 12678,
        "linearizedBaseContracts": [
          12678
        ],
        "name": "NativeTokenAdapter",
        "nameLocation": "156:18:70",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "c43e5f7d",
            "id": 12409,
            "mutability": "immutable",
            "name": "_bridge",
            "nameLocation": "206:7:70",
            "nodeType": "VariableDeclaration",
            "scope": 12678,
            "src": "181:32:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IBridge_$18146",
              "typeString": "contract IBridge"
            },
            "typeName": {
              "id": 12408,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 12407,
                "name": "IBridge",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 18146,
                "src": "181:7:70"
              },
              "referencedDeclaration": 18146,
              "src": "181:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IBridge_$18146",
                "typeString": "contract IBridge"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "f8ad7cc7",
            "id": 12411,
            "mutability": "immutable",
            "name": "_resourceID",
            "nameLocation": "244:11:70",
            "nodeType": "VariableDeclaration",
            "scope": 12678,
            "src": "219:36:70",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12410,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "219:7:70",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 12413,
            "name": "SenderNotAdmin",
            "nameLocation": "268:14:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "282:2:70"
            },
            "src": "262:23:70"
          },
          {
            "id": 12417,
            "name": "InsufficientMsgValueAmount",
            "nameLocation": "296:26:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12415,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "331:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12417,
                  "src": "323:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "322:16:70"
            },
            "src": "290:49:70"
          },
          {
            "id": 12421,
            "name": "MsgValueLowerThanFee",
            "nameLocation": "350:20:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12419,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "379:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12421,
                  "src": "371:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12418,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "370:16:70"
            },
            "src": "344:43:70"
          },
          {
            "id": 12423,
            "name": "InsufficientBalance",
            "nameLocation": "398:19:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "417:2:70"
            },
            "src": "392:28:70"
          },
          {
            "id": 12425,
            "name": "FailedFundsTransfer",
            "nameLocation": "431:19:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "450:2:70"
            },
            "src": "425:28:70"
          },
          {
            "id": 12427,
            "name": "ZeroGas",
            "nameLocation": "464:7:70",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 12426,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "471:2:70"
            },
            "src": "458:16:70"
          },
          {
            "body": {
              "id": 12444,
              "nodeType": "Block",
              "src": "528:76:70",
              "statements": [
                {
                  "expression": {
                    "id": 12438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 12434,
                      "name": "_bridge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12409,
                      "src": "538:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBridge_$18146",
                        "typeString": "contract IBridge"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 12436,
                          "name": "bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12429,
                          "src": "556:6:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 12435,
                        "name": "IBridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18146,
                        "src": "548:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IBridge_$18146_$",
                          "typeString": "type(contract IBridge)"
                        }
                      },
                      "id": 12437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "548:15:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBridge_$18146",
                        "typeString": "contract IBridge"
                      }
                    },
                    "src": "538:25:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBridge_$18146",
                      "typeString": "contract IBridge"
                    }
                  },
                  "id": 12439,
                  "nodeType": "ExpressionStatement",
                  "src": "538:25:70"
                },
                {
                  "expression": {
                    "id": 12442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 12440,
                      "name": "_resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12411,
                      "src": "573:11:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 12441,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12431,
                      "src": "587:10:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "573:24:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12443,
                  "nodeType": "ExpressionStatement",
                  "src": "573:24:70"
                }
              ]
            },
            "id": 12445,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12429,
                  "mutability": "mutable",
                  "name": "bridge",
                  "nameLocation": "500:6:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12445,
                  "src": "492:14:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12428,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "492:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12431,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nameLocation": "516:10:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12445,
                  "src": "508:18:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12430,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "508:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "491:36:70"
            },
            "returnParameters": {
              "id": 12433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "528:0:70"
            },
            "scope": 12678,
            "src": "480:124:70",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12472,
              "nodeType": "Block",
              "src": "705:211:70",
              "statements": [
                {
                  "assignments": [
                    12453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12453,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "728:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12472,
                      "src": "715:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12452,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "715:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12466,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 12460,
                                  "name": "recipientAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12449,
                                  "src": "786:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 12459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "780:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 12458,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "780:5:70",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "780:23:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 12462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "780:30:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "772:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12456,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "772:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "772:39:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12464,
                        "name": "recipientAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12449,
                        "src": "825:16:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "expression": {
                        "id": 12454,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "742:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "742:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "742:109:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "715:136:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12468,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12447,
                        "src": "876:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12469,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12453,
                        "src": "897:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12467,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "861:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "861:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12471,
                  "nodeType": "ExpressionStatement",
                  "src": "861:48:70"
                }
              ]
            },
            "functionSelector": "d8ca12b2",
            "id": 12473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "619:7:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12447,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "633:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12473,
                  "src": "627:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12446,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12449,
                  "mutability": "mutable",
                  "name": "recipientAddress",
                  "nameLocation": "670:16:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12473,
                  "src": "654:32:70",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12448,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:6:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "626:61:70"
            },
            "returnParameters": {
              "id": 12451,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "705:0:70"
            },
            "scope": 12678,
            "src": "610:306:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12496,
              "nodeType": "Block",
              "src": "1007:176:70",
              "statements": [
                {
                  "assignments": [
                    12481
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12481,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "1030:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12496,
                      "src": "1017:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12480,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1017:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12490,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "3230",
                            "id": 12486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1082:2:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "id": 12485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1074:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12484,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1074:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1074:11:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12488,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12477,
                        "src": "1099:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 12482,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1044:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "1044:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1044:74:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1017:101:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12492,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12475,
                        "src": "1143:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12493,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12481,
                        "src": "1164:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12491,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "1128:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1128:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12495,
                  "nodeType": "ExpressionStatement",
                  "src": "1128:48:70"
                }
              ]
            },
            "functionSelector": "a24b407c",
            "id": 12497,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositToEVM",
            "nameLocation": "931:12:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12475,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "950:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12497,
                  "src": "944:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12474,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "944:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12477,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "979:9:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12497,
                  "src": "971:17:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12476,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "943:46:70"
            },
            "returnParameters": {
              "id": 12479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1007:0:70"
            },
            "scope": 12678,
            "src": "922:261:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12539,
              "nodeType": "Block",
              "src": "2421:291:70",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 12509,
                      "name": "gas",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12504,
                      "src": "2435:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2442:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2435:8:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12515,
                  "nodeType": "IfStatement",
                  "src": "2431:30:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 12512,
                        "name": "ZeroGas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12427,
                        "src": "2452:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2452:9:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12514,
                    "nodeType": "RevertStatement",
                    "src": "2445:16:70"
                  }
                },
                {
                  "assignments": [
                    12517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12517,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "2484:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12539,
                      "src": "2471:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12516,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2471:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12533,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "3230",
                            "id": 12522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2536:2:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "id": 12521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2528:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12520,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2528:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2528:11:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12524,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12502,
                        "src": "2553:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 12525,
                        "name": "gas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12504,
                        "src": "2576:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 12528,
                              "name": "message",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12506,
                              "src": "2601:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 12529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2601:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2593:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12526,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2593:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2593:23:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12531,
                        "name": "message",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12506,
                        "src": "2630:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 12518,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2498:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "2498:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2498:149:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2471:176:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12535,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12500,
                        "src": "2672:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12536,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12517,
                        "src": "2693:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12534,
                      "name": "depositGeneral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12673,
                      "src": "2657:14:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes memory)"
                      }
                    },
                    "id": 12537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2657:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12538,
                  "nodeType": "ExpressionStatement",
                  "src": "2657:48:70"
                }
              ]
            },
            "documentation": {
              "id": 12498,
              "nodeType": "StructuredDocumentation",
              "src": "1189:1094:70",
              "text": "@notice Makes a native token deposit with an included message.\n@param destinationDomainID ID of destination chain.\n@param recipient The destination chain contract address that implements the ISygmaMessageReceiver interface.\nIf the recipient is set to zero address then it will be replaced on the destination with\nthe address of the DefaultMessageReceiver which is a generic ISygmaMessageReceiver implementation.\n@param gas The amount of gas needed to successfully execute the call to recipient on the destination. Fee amount is\ndirectly affected by this value.\n@param message Arbitrary encoded bytes array that will be passed as the third argument in the\nISygmaMessageReceiver(recipient).handleSygmaMessage(_, _, message) call. If you intend to use the\nDefaultMessageReceiver, make sure to encode the message to comply with the\nDefaultMessageReceiver.handleSygmaMessage() message decoding implementation."
            },
            "functionSelector": "c03bb908",
            "id": 12540,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositToEVMWithMessage",
            "nameLocation": "2297:23:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12500,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "2327:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2321:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12499,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2321:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12502,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2356:9:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2348:17:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:7:70",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12504,
                  "mutability": "mutable",
                  "name": "gas",
                  "nameLocation": "2375:3:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2367:11:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12503,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2367:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12506,
                  "mutability": "mutable",
                  "name": "message",
                  "nameLocation": "2395:7:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12540,
                  "src": "2380:22:70",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12505,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2380:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2320:83:70"
            },
            "returnParameters": {
              "id": 12508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2421:0:70"
            },
            "scope": 12678,
            "src": "2288:424:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 12672,
              "nodeType": "Block",
              "src": "2821:1229:70",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12547,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "2835:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "2835:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2848:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2835:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12556,
                  "nodeType": "IfStatement",
                  "src": "2831:64:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 12552,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2885:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "2885:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 12551,
                        "name": "InsufficientMsgValueAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12417,
                        "src": "2858:26:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                          "typeString": "function (uint256) pure"
                        }
                      },
                      "id": 12554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2858:37:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12555,
                    "nodeType": "RevertStatement",
                    "src": "2851:44:70"
                  }
                },
                {
                  "assignments": [
                    12558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12558,
                      "mutability": "mutable",
                      "name": "feeHandlerRouter",
                      "nameLocation": "2913:16:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "2905:24:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12557,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2905:7:70",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12562,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 12559,
                        "name": "_bridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12409,
                        "src": "2932:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBridge_$18146",
                          "typeString": "contract IBridge"
                        }
                      },
                      "id": 12560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_feeHandler",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18121,
                      "src": "2932:19:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$",
                        "typeString": "function () external returns (address)"
                      }
                    },
                    "id": 12561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2932:21:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2905:48:70"
                },
                {
                  "assignments": [
                    12564,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12564,
                      "mutability": "mutable",
                      "name": "fee",
                      "nameLocation": "2972:3:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "2964:11:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12563,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2964:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 12586,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 12571,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "3045:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                              "typeString": "contract NativeTokenAdapter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                              "typeString": "contract NativeTokenAdapter"
                            }
                          ],
                          "id": 12570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3037:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12569,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3037:7:70",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 12572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3037:13:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 12573,
                            "name": "_bridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12409,
                            "src": "3064:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBridge_$18146",
                              "typeString": "contract IBridge"
                            }
                          },
                          "id": 12574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_domainID",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18115,
                          "src": "3064:17:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint8_$",
                            "typeString": "function () external returns (uint8)"
                          }
                        },
                        "id": 12575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3064:19:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12576,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12542,
                        "src": "3097:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12577,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3130:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 12580,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3172:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "3172:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 12582,
                            "name": "depositDataAfterAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12544,
                            "src": "3183:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 12578,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3155:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 12579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3155:16:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 12583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3155:51:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 12584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3220:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 12566,
                            "name": "feeHandlerRouter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12558,
                            "src": "2993:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12565,
                          "name": "IFeeHandler",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18265,
                          "src": "2981:11:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IFeeHandler_$18265_$",
                            "typeString": "type(contract IFeeHandler)"
                          }
                        },
                        "id": 12567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2981:29:70",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFeeHandler_$18265",
                          "typeString": "contract IFeeHandler"
                        }
                      },
                      "id": 12568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "calculateFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18258,
                      "src": "2981:42:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_address_$",
                        "typeString": "function (address,uint8,uint8,bytes32,bytes memory,bytes memory) view external returns (uint256,address)"
                      }
                    },
                    "id": 12585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2981:276:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                      "typeString": "tuple(uint256,address)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2963:294:70"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12587,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "3272:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "3272:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 12589,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12564,
                      "src": "3284:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3272:15:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12596,
                  "nodeType": "IfStatement",
                  "src": "3268:59:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 12592,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "3317:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "3317:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 12591,
                        "name": "MsgValueLowerThanFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12421,
                        "src": "3296:20:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                          "typeString": "function (uint256) pure"
                        }
                      },
                      "id": 12594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3296:31:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12595,
                    "nodeType": "RevertStatement",
                    "src": "3289:38:70"
                  }
                },
                {
                  "assignments": [
                    12598
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12598,
                      "mutability": "mutable",
                      "name": "transferAmount",
                      "nameLocation": "3345:14:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3337:22:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12597,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3337:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12603,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 12599,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "3362:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "3362:9:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 12601,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12564,
                      "src": "3374:3:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3362:15:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3337:40:70"
                },
                {
                  "assignments": [
                    12605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12605,
                      "mutability": "mutable",
                      "name": "depositData",
                      "nameLocation": "3401:11:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3388:24:70",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12604,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3388:5:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12611,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 12608,
                        "name": "transferAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12598,
                        "src": "3445:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 12609,
                        "name": "depositDataAfterAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12544,
                        "src": "3473:22:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 12606,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "3415:3:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "3415:16:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 12610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3415:90:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3388:117:70"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 12617,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12542,
                        "src": "3544:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 12618,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3565:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 12619,
                        "name": "depositData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12605,
                        "src": "3578:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 12620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3591:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "expression": {
                          "id": 12612,
                          "name": "_bridge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12409,
                          "src": "3516:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBridge_$18146",
                            "typeString": "contract IBridge"
                          }
                        },
                        "id": 12614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "deposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18145,
                        "src": "3516:15:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint64_$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint8,bytes32,bytes memory,bytes memory) payable external returns (uint64,bytes memory)"
                        }
                      },
                      "id": 12616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 12615,
                          "name": "fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12564,
                          "src": "3539:3:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "3516:27:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_uint8_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint64_$_t_bytes_memory_ptr_$value",
                        "typeString": "function (uint8,bytes32,bytes memory,bytes memory) payable external returns (uint64,bytes memory)"
                      }
                    },
                    "id": 12621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3516:78:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint64_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint64,bytes memory)"
                    }
                  },
                  "id": 12622,
                  "nodeType": "ExpressionStatement",
                  "src": "3516:78:70"
                },
                {
                  "assignments": [
                    12624
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12624,
                      "mutability": "mutable",
                      "name": "nativeHandlerAddress",
                      "nameLocation": "3613:20:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3605:28:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12623,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3605:7:70",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12629,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 12627,
                        "name": "_resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12411,
                        "src": "3672:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 12625,
                        "name": "_bridge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12409,
                        "src": "3636:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBridge_$18146",
                          "typeString": "contract IBridge"
                        }
                      },
                      "id": 12626,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_resourceIDToHandlerAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18129,
                      "src": "3636:35:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 12628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3636:48:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3605:79:70"
                },
                {
                  "assignments": [
                    12631,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12631,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "3700:7:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3695:12:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12630,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3695:4:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 12638,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "",
                        "id": 12636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3762:2:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          }
                        ],
                        "expression": {
                          "id": 12632,
                          "name": "nativeHandlerAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12624,
                          "src": "3713:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "call",
                        "nodeType": "MemberAccess",
                        "src": "3713:25:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                        }
                      },
                      "id": 12635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 12634,
                          "name": "transferAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12598,
                          "src": "3746:14:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "3713:48:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 12637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3713:52:70",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3694:71:70"
                },
                {
                  "condition": {
                    "id": 12640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3779:8:70",
                    "subExpression": {
                      "id": 12639,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12631,
                      "src": "3780:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12644,
                  "nodeType": "IfStatement",
                  "src": "3775:42:70",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 12641,
                        "name": "FailedFundsTransfer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12425,
                        "src": "3796:19:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 12642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3796:21:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 12643,
                    "nodeType": "RevertStatement",
                    "src": "3789:28:70"
                  }
                },
                {
                  "assignments": [
                    12646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12646,
                      "mutability": "mutable",
                      "name": "leftover",
                      "nameLocation": "3835:8:70",
                      "nodeType": "VariableDeclaration",
                      "scope": 12672,
                      "src": "3827:16:70",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12645,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3827:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 12652,
                  "initialValue": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 12649,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967268,
                          "src": "3854:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                            "typeString": "contract NativeTokenAdapter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_NativeTokenAdapter_$12678",
                            "typeString": "contract NativeTokenAdapter"
                          }
                        ],
                        "id": 12648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3846:7:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 12647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3846:7:70",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 12650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3846:13:70",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 12651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "balance",
                    "nodeType": "MemberAccess",
                    "src": "3846:21:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3827:40:70"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 12653,
                      "name": "leftover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12646,
                      "src": "3881:8:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 12654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3892:1:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3881:12:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12671,
                  "nodeType": "IfStatement",
                  "src": "3877:167:70",
                  "trueBody": {
                    "id": 12670,
                    "nodeType": "Block",
                    "src": "3895:149:70",
                    "statements": [
                      {
                        "expression": {
                          "id": 12668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 12656,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12631,
                                "src": "3910:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              null
                            ],
                            "id": 12657,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3909:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$__$",
                              "typeString": "tuple(bool,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "",
                                "id": 12666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3965:2:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 12660,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "3931:3:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12661,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3931:10:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 12659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3923:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 12658,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3923:8:70",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3923:19:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "id": 12663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "src": "3923:24:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 12665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "nodeType": "FunctionCallOptions",
                              "options": [
                                {
                                  "id": 12664,
                                  "name": "leftover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12646,
                                  "src": "3955:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "src": "3923:41:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 12667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3923:45:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "3909:59:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12669,
                        "nodeType": "ExpressionStatement",
                        "src": "3909:59:70"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "0929a2dc",
            "id": 12673,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depositGeneral",
            "nameLocation": "2727:14:70",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12542,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nameLocation": "2748:19:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12673,
                  "src": "2742:25:70",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 12541,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12544,
                  "mutability": "mutable",
                  "name": "depositDataAfterAmount",
                  "nameLocation": "2782:22:70",
                  "nodeType": "VariableDeclaration",
                  "scope": 12673,
                  "src": "2769:35:70",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 12543,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2769:5:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2741:64:70"
            },
            "returnParameters": {
              "id": 12546,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2821:0:70"
            },
            "scope": 12678,
            "src": "2718:1332:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12676,
              "nodeType": "Block",
              "src": "4145:2:70",
              "statements": []
            },
            "id": 12677,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12674,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4125:2:70"
            },
            "returnParameters": {
              "id": 12675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4145:0:70"
            },
            "scope": 12678,
            "src": "4118:29:70",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 12679,
        "src": "147:4002:70",
        "usedErrors": [
          12413,
          12417,
          12421,
          12423,
          12425,
          12427
        ]
      }
    ],
    "src": "37:4113:70"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.11+commit.d7f03943.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.6",
  "updatedAt": "2024-09-24T09:31:11.861Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "depositToEVMWithMessage(uint8,address,uint256,bytes)": {
        "params": {
          "destinationDomainID": "ID of destination chain.",
          "gas": "The amount of gas needed to successfully execute the call to recipient on the destination. Fee amount is directly affected by this value.",
          "message": "Arbitrary encoded bytes array that will be passed as the third argument in the ISygmaMessageReceiver(recipient).handleSygmaMessage(_, _, message) call. If you intend to use the DefaultMessageReceiver, make sure to encode the message to comply with the DefaultMessageReceiver.handleSygmaMessage() message decoding implementation.",
          "recipient": "The destination chain contract address that implements the ISygmaMessageReceiver interface. If the recipient is set to zero address then it will be replaced on the destination with the address of the DefaultMessageReceiver which is a generic ISygmaMessageReceiver implementation."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "depositToEVMWithMessage(uint8,address,uint256,bytes)": {
        "notice": "Makes a native token deposit with an included message."
      }
    },
    "version": 1
  }
}