{
  "contractName": "WitnetPriceFeedsLib",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "initcode",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "constructorParams",
          "type": "bytes"
        }
      ],
      "name": "determinePriceSolverAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "prefix",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "validateCaption",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initcode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"constructorParams\",\"type\":\"bytes\"}],\"name\":\"determinePriceSolverAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prefix\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"}],\"name\":\"validateCaption\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"details\":\"Features:- deployment of counter-factual IWitnetPriceSolver instances.- validation of feed caption strings.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Ancillary deployable library for WitnetPriceFeeds.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/WitnetPriceFeedsLib.sol\":\"WitnetPriceFeedsLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/IWitnetPriceSolver.sol\":{\"keccak256\":\"0x858441dafaa0617a8d679b3cda493b418284d865899c3f235cb3f41535db7a16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d25f8985aede9c32cee369872a9f21db41c7b9abc87d5d4d02ff7e15879b98\",\"dweb:/ipfs/QmdoZnVpx9FZeg8KHgMjGRLmVKtdn7zzFTadFUjT8xd3dR\"]},\"project:/contracts/interfaces/IWitnetPriceSolverDeployer.sol\":{\"keccak256\":\"0x52d4e504fb6e699893a592ba5723794688c70ad36af7eb5ffdc08e692b2ddb21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ab7f54312c0c8443e9220d41a72513ef84377d315cad3c49397da94361d5c42\",\"dweb:/ipfs/QmRTJtxnoRhh9AXMixRvSa8BT4vprZttLgqGzmLEjZG6oB\"]},\"project:/contracts/libs/Slices.sol\":{\"keccak256\":\"0x9d046fa558be922c9625a1fdc470f6e68b3c9b5745b6185cb4a4fc59181fa006\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://ab19ba09faf83aaa92947f0a0907f6522be89279a9a1b0e53d5393a23085947d\",\"dweb:/ipfs/QmeE9MwhpSFNTwyqDFpMFjftrJKR1edBhLjV3bdKQQHUVm\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x65a87375dd79d63a83fb454b7199b6c999bd59c50b3b59d521c5c4d45a7d3cc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca865b681d810c2fc5c3672ea6343c3bdf6fd71764ab824d25994744dc85866b\",\"dweb:/ipfs/QmPGcP3xGTNZfsQ9GSKdujNLRVs8dWDdubyUko1rbQqJNv\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0xa14570492eb5a313ddbacae0185c850ec99c67211eb33989a5e21d31bf06a150\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e83c11edb49cab6a767c0b685825bc22ece0d3d2897e0d54fe1923df5cc76ba5\",\"dweb:/ipfs/QmdLDgCc3tnKbgRrXwfNzsg6uUDirNmjvBB8V3iMmnD69a\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xb346547ff731163beea2c657c52675cdf7936691d566a76a045577cf9c34ade0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d4b5b6424a033584b41f1204d635db98fda9ca9bd2a614c9d82539a3e4e6529\",\"dweb:/ipfs/QmW6Qy3wWpzHSECYaCPaf9LWGfPqWDKVoP2kPSNNQu7LMQ\"]},\"project:/contracts/libs/WitnetPriceFeedsLib.sol\":{\"keccak256\":\"0x28b4a473e8432d83ecdfcb9b712277e51f1090e7f827cec14bf0ad56efebf3df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09a3799d20b35a94aa3246706426ee54bd18031aa68c13f93554491f5d088d0\",\"dweb:/ipfs/QmUUt459tcusH5TnriFpNDTeKCfEtEX6E6Y8RANFzfLDVb\"]},\"project:/contracts/libs/WitnetV2.sol\":{\"keccak256\":\"0xb276a6da373bfbe9cd942dd7e59979cda898215d1e36ab3df95a6d6cc6ff770f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc4890876b9bc64f501ccdd48408bb63724865cb2ce8d2057f6b318540adce7c\",\"dweb:/ipfs/QmPMHPdbCsKBavhiLcaDgQ9EjNSvwwzv8TKffotcCv1ctP\"]}},\"version\":1}",
  "bytecode": "0x610c8b610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063a55b471c14610050578063e78d44d91461008d578063ff75890f146100b2575b600080fd5b81801561005c57600080fd5b5061007061006b36600461098c565b6100c5565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a061009b3660046109f8565b610202565b60405160ff9091168152602001610084565b6100706100c036600461098c565b610440565b60006100d385858585610440565b9050806001600160a01b03163b6000036101fa5760006100f5868686866104c6565b90506000808251602084016000f59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610a44565b6001600160e01b031916146101f75760405162461bcd60e51b815260206004820152603660248201527f5769746e6574507269636546656564734c69623a20756e636f6d706c69616e746044820152751039b7b63b32b91034b6b83632b6b2b73a30ba34b7b760511b60648201526084015b60405180910390fd5b50505b949350505050565b60006001600160d01b031984166102198385610a75565b6001600160d01b031916146102805760405162461bcd60e51b815260206004820152602760248201527f5769746e6574507269636546656564734c69623a206261642063617074696f6e604482015266040e0e4caccd2f60cb1b60648201526084016101ee565b60006102c184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104f892505050565b60408051808201825260018152602d60f81b60208083019182528351808501855260008082529082018190528451808601909552925184528301529192509061030a8383610525565b610315906001610abb565b67ffffffffffffffff81111561032d5761032d610ad4565b60405190808252806020026020018201604052801561036057816020015b606081526020019060019003908161034b5790505b50905060005b81518110156103a65761038161037c85856105c6565b6105e5565b82828151811061039357610393610aea565b6020908102919091010152600101610366565b506000806103d983600185516103bc9190610b00565b815181106103cc576103cc610aea565b602002602001015161064e565b91509150806104345760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564734c69623a2062616420646563696d616c6044820152607360f81b60648201526084016101ee565b50979650505050505050565b60006001600160f81b03193082610459888888886104c6565b80516020918201206040516104a595949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6060848484846040516020016104df9493929190610b13565b6040516020818303038152906040529050949350505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b600080826000015161054985600001518660200151866000015187602001516106fe565b6105539190610abb565b90505b835160208501516105679190610abb565b81116105bf578161057781610b35565b92505082600001516105ae8560200151836105929190610b00565b865161059e9190610b00565b83866000015187602001516106fe565b6105b89190610abb565b9050610556565b5092915050565b60408051808201909152600080825260208201526105bf83838361081e565b60606000826000015167ffffffffffffffff81111561060657610606610ad4565b6040519080825280601f01601f191660200182016040528015610630576020820181803683370190505b50905060006020820190506105bf81856020015186600001516108c9565b60008060005b83518110156106f3576000603085838151811061067357610673610aea565b016020015160f81c0360ff1610806106aa57506009603085838151811061069c5761069c610aea565b016020015160f81c0360ff16115b156106bb5750600093849350915050565b60018185510303600a0a60308583815181106106d9576106d9610aea565b016020015160f81c0360ff16029290920191600101610654565b509092600192509050565b6000838186851161080957602085116107b8576000851561074a576001610726876020610b00565b610731906008610b4e565b61073c906002610c49565b6107469190610b00565b1990505b8451811660008761075b8b8b610abb565b6107659190610b00565b855190915083165b8281146107aa57818610610792576107858b8b610abb565b96505050505050506101fa565b8561079c81610b35565b96505083865116905061076d565b8596505050505050506101fa565b508383206000905b6107ca8689610b00565b8211610807578583208082036107e657839450505050506101fa565b6107f1600185610abb565b93505081806107ff90610b35565b9250506107c0565b505b6108138787610abb565b979650505050505050565b6040805180820190915260008082526020820152600061085085600001518660200151866000015187602001516106fe565b60208087018051918601919091525190915061086c9082610b00565b83528451602086015161087f9190610abb565b810361088e57600085526108c0565b8351835161089c9190610abb565b855186906108ab908390610b00565b90525083516108ba9082610abb565b60208601525b50909392505050565b6020811061090157815183526108e0602084610abb565b92506108ed602083610abb565b91506108fa602082610b00565b90506108c9565b6000198115610930576001610917836020610b00565b61092390610100610c49565b61092d9190610b00565b90505b9151835183169219169190911790915250565b60008083601f84011261095557600080fd5b50813567ffffffffffffffff81111561096d57600080fd5b60208301915083602082850101111561098557600080fd5b9250929050565b600080600080604085870312156109a257600080fd5b843567ffffffffffffffff808211156109ba57600080fd5b6109c688838901610943565b909650945060208701359150808211156109df57600080fd5b506109ec87828801610943565b95989497509550505050565b600080600060408486031215610a0d57600080fd5b83359250602084013567ffffffffffffffff811115610a2b57600080fd5b610a3786828701610943565b9497909650939450505050565b600060208284031215610a5657600080fd5b81516001600160e01b031981168114610a6e57600080fd5b9392505050565b6001600160d01b03198135818116916006851015610a9d5780818660060360031b1b83161692505b505092915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ace57610ace610aa5565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81810381811115610ace57610ace610aa5565b8385823760008482016000815283858237600093019283525090949350505050565b600060018201610b4757610b47610aa5565b5060010190565b8082028115828204841417610ace57610ace610aa5565b600181815b80851115610ba0578160001904821115610b8657610b86610aa5565b80851615610b9357918102915b93841c9390800290610b6a565b509250929050565b600082610bb757506001610ace565b81610bc457506000610ace565b8160018114610bda5760028114610be457610c00565b6001915050610ace565b60ff841115610bf557610bf5610aa5565b50506001821b610ace565b5060208310610133831016604e8410600b8410161715610c23575081810a610ace565b610c2d8383610b65565b8060001904821115610c4157610c41610aa5565b029392505050565b6000610a6e8383610ba856fea2646970667358221220873cefac74f775ab05dded04e5e1156cab14c588b7ba18bd6cab1142839d7ca964736f6c63430008190033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063a55b471c14610050578063e78d44d91461008d578063ff75890f146100b2575b600080fd5b81801561005c57600080fd5b5061007061006b36600461098c565b6100c5565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a061009b3660046109f8565b610202565b60405160ff9091168152602001610084565b6100706100c036600461098c565b610440565b60006100d385858585610440565b9050806001600160a01b03163b6000036101fa5760006100f5868686866104c6565b90506000808251602084016000f59050809250636d7f4b0b60e11b6001600160e01b031916836001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610a44565b6001600160e01b031916146101f75760405162461bcd60e51b815260206004820152603660248201527f5769746e6574507269636546656564734c69623a20756e636f6d706c69616e746044820152751039b7b63b32b91034b6b83632b6b2b73a30ba34b7b760511b60648201526084015b60405180910390fd5b50505b949350505050565b60006001600160d01b031984166102198385610a75565b6001600160d01b031916146102805760405162461bcd60e51b815260206004820152602760248201527f5769746e6574507269636546656564734c69623a206261642063617074696f6e604482015266040e0e4caccd2f60cb1b60648201526084016101ee565b60006102c184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104f892505050565b60408051808201825260018152602d60f81b60208083019182528351808501855260008082529082018190528451808601909552925184528301529192509061030a8383610525565b610315906001610abb565b67ffffffffffffffff81111561032d5761032d610ad4565b60405190808252806020026020018201604052801561036057816020015b606081526020019060019003908161034b5790505b50905060005b81518110156103a65761038161037c85856105c6565b6105e5565b82828151811061039357610393610aea565b6020908102919091010152600101610366565b506000806103d983600185516103bc9190610b00565b815181106103cc576103cc610aea565b602002602001015161064e565b91509150806104345760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564734c69623a2062616420646563696d616c6044820152607360f81b60648201526084016101ee565b50979650505050505050565b60006001600160f81b03193082610459888888886104c6565b80516020918201206040516104a595949392016001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6060848484846040516020016104df9493929190610b13565b6040516020818303038152906040529050949350505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b600080826000015161054985600001518660200151866000015187602001516106fe565b6105539190610abb565b90505b835160208501516105679190610abb565b81116105bf578161057781610b35565b92505082600001516105ae8560200151836105929190610b00565b865161059e9190610b00565b83866000015187602001516106fe565b6105b89190610abb565b9050610556565b5092915050565b60408051808201909152600080825260208201526105bf83838361081e565b60606000826000015167ffffffffffffffff81111561060657610606610ad4565b6040519080825280601f01601f191660200182016040528015610630576020820181803683370190505b50905060006020820190506105bf81856020015186600001516108c9565b60008060005b83518110156106f3576000603085838151811061067357610673610aea565b016020015160f81c0360ff1610806106aa57506009603085838151811061069c5761069c610aea565b016020015160f81c0360ff16115b156106bb5750600093849350915050565b60018185510303600a0a60308583815181106106d9576106d9610aea565b016020015160f81c0360ff16029290920191600101610654565b509092600192509050565b6000838186851161080957602085116107b8576000851561074a576001610726876020610b00565b610731906008610b4e565b61073c906002610c49565b6107469190610b00565b1990505b8451811660008761075b8b8b610abb565b6107659190610b00565b855190915083165b8281146107aa57818610610792576107858b8b610abb565b96505050505050506101fa565b8561079c81610b35565b96505083865116905061076d565b8596505050505050506101fa565b508383206000905b6107ca8689610b00565b8211610807578583208082036107e657839450505050506101fa565b6107f1600185610abb565b93505081806107ff90610b35565b9250506107c0565b505b6108138787610abb565b979650505050505050565b6040805180820190915260008082526020820152600061085085600001518660200151866000015187602001516106fe565b60208087018051918601919091525190915061086c9082610b00565b83528451602086015161087f9190610abb565b810361088e57600085526108c0565b8351835161089c9190610abb565b855186906108ab908390610b00565b90525083516108ba9082610abb565b60208601525b50909392505050565b6020811061090157815183526108e0602084610abb565b92506108ed602083610abb565b91506108fa602082610b00565b90506108c9565b6000198115610930576001610917836020610b00565b61092390610100610c49565b61092d9190610b00565b90505b9151835183169219169190911790915250565b60008083601f84011261095557600080fd5b50813567ffffffffffffffff81111561096d57600080fd5b60208301915083602082850101111561098557600080fd5b9250929050565b600080600080604085870312156109a257600080fd5b843567ffffffffffffffff808211156109ba57600080fd5b6109c688838901610943565b909650945060208701359150808211156109df57600080fd5b506109ec87828801610943565b95989497509550505050565b600080600060408486031215610a0d57600080fd5b83359250602084013567ffffffffffffffff811115610a2b57600080fd5b610a3786828701610943565b9497909650939450505050565b600060208284031215610a5657600080fd5b81516001600160e01b031981168114610a6e57600080fd5b9392505050565b6001600160d01b03198135818116916006851015610a9d5780818660060360031b1b83161692505b505092915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ace57610ace610aa5565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81810381811115610ace57610ace610aa5565b8385823760008482016000815283858237600093019283525090949350505050565b600060018201610b4757610b47610aa5565b5060010190565b8082028115828204841417610ace57610ace610aa5565b600181815b80851115610ba0578160001904821115610b8657610b86610aa5565b80851615610b9357918102915b93841c9390800290610b6a565b509250929050565b600082610bb757506001610ace565b81610bc457506000610ace565b8160018114610bda5760028114610be457610c00565b6001915050610ace565b60ff841115610bf557610bf5610aa5565b50506001821b610ace565b5060208310610133831016604e8410600b8410161715610c23575081810a610ace565b610c2d8383610b65565b8060001904821115610c4157610c41610aa5565b029392505050565b6000610a6e8383610ba856fea2646970667358221220873cefac74f775ab05dded04e5e1156cab14c588b7ba18bd6cab1142839d7ca964736f6c63430008190033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:7056:84",
        "nodeType": "YulBlock",
        "src": "0:7056:84",
        "statements": [
          {
            "nativeSrc": "6:3:84",
            "nodeType": "YulBlock",
            "src": "6:3:84",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "86:275:84",
              "nodeType": "YulBlock",
              "src": "86:275:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "135:16:84",
                    "nodeType": "YulBlock",
                    "src": "135:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "144:1:84",
                              "nodeType": "YulLiteral",
                              "src": "144:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "147:1:84",
                              "nodeType": "YulLiteral",
                              "src": "147:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "137:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "137:6:84"
                          },
                          "nativeSrc": "137:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "137:12:84"
                        },
                        "nativeSrc": "137:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "137:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "114:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "114:6:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "122:4:84",
                                "nodeType": "YulLiteral",
                                "src": "122:4:84",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "110:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "110:3:84"
                            },
                            "nativeSrc": "110:17:84",
                            "nodeType": "YulFunctionCall",
                            "src": "110:17:84"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "129:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "129:3:84"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "106:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "106:3:84"
                        },
                        "nativeSrc": "106:27:84",
                        "nodeType": "YulFunctionCall",
                        "src": "106:27:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "99:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "99:6:84"
                    },
                    "nativeSrc": "99:35:84",
                    "nodeType": "YulFunctionCall",
                    "src": "99:35:84"
                  },
                  "nativeSrc": "96:55:84",
                  "nodeType": "YulIf",
                  "src": "96:55:84"
                },
                {
                  "nativeSrc": "160:30:84",
                  "nodeType": "YulAssignment",
                  "src": "160:30:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "183:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "183:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "170:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "170:12:84"
                    },
                    "nativeSrc": "170:20:84",
                    "nodeType": "YulFunctionCall",
                    "src": "170:20:84"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "160:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "160:6:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "233:16:84",
                    "nodeType": "YulBlock",
                    "src": "233:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "242:1:84",
                              "nodeType": "YulLiteral",
                              "src": "242:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "245:1:84",
                              "nodeType": "YulLiteral",
                              "src": "245:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "235:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "235:6:84"
                          },
                          "nativeSrc": "235:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "235:12:84"
                        },
                        "nativeSrc": "235:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "235:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "205:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "205:6:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "213:18:84",
                        "nodeType": "YulLiteral",
                        "src": "213:18:84",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "202:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "202:2:84"
                    },
                    "nativeSrc": "202:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "202:30:84"
                  },
                  "nativeSrc": "199:50:84",
                  "nodeType": "YulIf",
                  "src": "199:50:84"
                },
                {
                  "nativeSrc": "258:29:84",
                  "nodeType": "YulAssignment",
                  "src": "258:29:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "274:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "274:6:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "282:4:84",
                        "nodeType": "YulLiteral",
                        "src": "282:4:84",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "270:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "270:3:84"
                    },
                    "nativeSrc": "270:17:84",
                    "nodeType": "YulFunctionCall",
                    "src": "270:17:84"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "258:8:84",
                      "nodeType": "YulIdentifier",
                      "src": "258:8:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "339:16:84",
                    "nodeType": "YulBlock",
                    "src": "339:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "348:1:84",
                              "nodeType": "YulLiteral",
                              "src": "348:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "351:1:84",
                              "nodeType": "YulLiteral",
                              "src": "351:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "341:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "341:6:84"
                          },
                          "nativeSrc": "341:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "341:12:84"
                        },
                        "nativeSrc": "341:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "341:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "310:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "310:6:84"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "318:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "318:6:84"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "306:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "306:3:84"
                            },
                            "nativeSrc": "306:19:84",
                            "nodeType": "YulFunctionCall",
                            "src": "306:19:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "327:4:84",
                            "nodeType": "YulLiteral",
                            "src": "327:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "302:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "302:3:84"
                        },
                        "nativeSrc": "302:30:84",
                        "nodeType": "YulFunctionCall",
                        "src": "302:30:84"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "334:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "334:3:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "299:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "299:2:84"
                    },
                    "nativeSrc": "299:39:84",
                    "nodeType": "YulFunctionCall",
                    "src": "299:39:84"
                  },
                  "nativeSrc": "296:59:84",
                  "nodeType": "YulIf",
                  "src": "296:59:84"
                }
              ]
            },
            "name": "abi_decode_bytes_calldata",
            "nativeSrc": "14:347:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "49:6:84",
                "nodeType": "YulTypedName",
                "src": "49:6:84",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "57:3:84",
                "nodeType": "YulTypedName",
                "src": "57:3:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "65:8:84",
                "nodeType": "YulTypedName",
                "src": "65:8:84",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "75:6:84",
                "nodeType": "YulTypedName",
                "src": "75:6:84",
                "type": ""
              }
            ],
            "src": "14:347:84"
          },
          {
            "body": {
              "nativeSrc": "491:592:84",
              "nodeType": "YulBlock",
              "src": "491:592:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "537:16:84",
                    "nodeType": "YulBlock",
                    "src": "537:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "546:1:84",
                              "nodeType": "YulLiteral",
                              "src": "546:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "549:1:84",
                              "nodeType": "YulLiteral",
                              "src": "549:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "539:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "539:6:84"
                          },
                          "nativeSrc": "539:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "539:12:84"
                        },
                        "nativeSrc": "539:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "539:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "512:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "512:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "521:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "521:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "508:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "508:3:84"
                        },
                        "nativeSrc": "508:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "508:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "533:2:84",
                        "nodeType": "YulLiteral",
                        "src": "533:2:84",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "504:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "504:3:84"
                    },
                    "nativeSrc": "504:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "504:32:84"
                  },
                  "nativeSrc": "501:52:84",
                  "nodeType": "YulIf",
                  "src": "501:52:84"
                },
                {
                  "nativeSrc": "562:37:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "562:37:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "589:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "589:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "576:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "576:12:84"
                    },
                    "nativeSrc": "576:23:84",
                    "nodeType": "YulFunctionCall",
                    "src": "576:23:84"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "566:6:84",
                      "nodeType": "YulTypedName",
                      "src": "566:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "608:28:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "608:28:84",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "618:18:84",
                    "nodeType": "YulLiteral",
                    "src": "618:18:84",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "612:2:84",
                      "nodeType": "YulTypedName",
                      "src": "612:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "663:16:84",
                    "nodeType": "YulBlock",
                    "src": "663:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "672:1:84",
                              "nodeType": "YulLiteral",
                              "src": "672:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "675:1:84",
                              "nodeType": "YulLiteral",
                              "src": "675:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "665:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "665:6:84"
                          },
                          "nativeSrc": "665:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "665:12:84"
                        },
                        "nativeSrc": "665:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "665:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "651:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "651:6:84"
                      },
                      {
                        "name": "_1",
                        "nativeSrc": "659:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "659:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "648:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "648:2:84"
                    },
                    "nativeSrc": "648:14:84",
                    "nodeType": "YulFunctionCall",
                    "src": "648:14:84"
                  },
                  "nativeSrc": "645:34:84",
                  "nodeType": "YulIf",
                  "src": "645:34:84"
                },
                {
                  "nativeSrc": "688:84:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "688:84:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "744:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "744:9:84"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "755:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "755:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "740:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "740:3:84"
                        },
                        "nativeSrc": "740:22:84",
                        "nodeType": "YulFunctionCall",
                        "src": "740:22:84"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "764:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "764:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nativeSrc": "714:25:84",
                      "nodeType": "YulIdentifier",
                      "src": "714:25:84"
                    },
                    "nativeSrc": "714:58:84",
                    "nodeType": "YulFunctionCall",
                    "src": "714:58:84"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "692:8:84",
                      "nodeType": "YulTypedName",
                      "src": "692:8:84",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "702:8:84",
                      "nodeType": "YulTypedName",
                      "src": "702:8:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "781:18:84",
                  "nodeType": "YulAssignment",
                  "src": "781:18:84",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "791:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "791:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "781:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "781:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "808:18:84",
                  "nodeType": "YulAssignment",
                  "src": "808:18:84",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "818:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "818:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "808:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "808:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "835:48:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "835:48:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "868:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "868:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "879:2:84",
                            "nodeType": "YulLiteral",
                            "src": "879:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "864:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "864:3:84"
                        },
                        "nativeSrc": "864:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "864:18:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "851:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "851:12:84"
                    },
                    "nativeSrc": "851:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "851:32:84"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "839:8:84",
                      "nodeType": "YulTypedName",
                      "src": "839:8:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "912:16:84",
                    "nodeType": "YulBlock",
                    "src": "912:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "921:1:84",
                              "nodeType": "YulLiteral",
                              "src": "921:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "924:1:84",
                              "nodeType": "YulLiteral",
                              "src": "924:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "914:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "914:6:84"
                          },
                          "nativeSrc": "914:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "914:12:84"
                        },
                        "nativeSrc": "914:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "914:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "898:8:84",
                        "nodeType": "YulIdentifier",
                        "src": "898:8:84"
                      },
                      {
                        "name": "_1",
                        "nativeSrc": "908:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "908:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "895:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "895:2:84"
                    },
                    "nativeSrc": "895:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "895:16:84"
                  },
                  "nativeSrc": "892:36:84",
                  "nodeType": "YulIf",
                  "src": "892:36:84"
                },
                {
                  "nativeSrc": "937:86:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "937:86:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "993:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "993:9:84"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "1004:8:84",
                            "nodeType": "YulIdentifier",
                            "src": "1004:8:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "989:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "989:3:84"
                        },
                        "nativeSrc": "989:24:84",
                        "nodeType": "YulFunctionCall",
                        "src": "989:24:84"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1015:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "1015:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nativeSrc": "963:25:84",
                      "nodeType": "YulIdentifier",
                      "src": "963:25:84"
                    },
                    "nativeSrc": "963:60:84",
                    "nodeType": "YulFunctionCall",
                    "src": "963:60:84"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "941:8:84",
                      "nodeType": "YulTypedName",
                      "src": "941:8:84",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "951:8:84",
                      "nodeType": "YulTypedName",
                      "src": "951:8:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1032:18:84",
                  "nodeType": "YulAssignment",
                  "src": "1032:18:84",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "1042:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "1042:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "1032:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1032:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "1059:18:84",
                  "nodeType": "YulAssignment",
                  "src": "1059:18:84",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "1069:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "1069:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "1059:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1059:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr",
            "nativeSrc": "366:717:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "433:9:84",
                "nodeType": "YulTypedName",
                "src": "433:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "444:7:84",
                "nodeType": "YulTypedName",
                "src": "444:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "456:6:84",
                "nodeType": "YulTypedName",
                "src": "456:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "464:6:84",
                "nodeType": "YulTypedName",
                "src": "464:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "472:6:84",
                "nodeType": "YulTypedName",
                "src": "472:6:84",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "480:6:84",
                "nodeType": "YulTypedName",
                "src": "480:6:84",
                "type": ""
              }
            ],
            "src": "366:717:84"
          },
          {
            "body": {
              "nativeSrc": "1197:102:84",
              "nodeType": "YulBlock",
              "src": "1197:102:84",
              "statements": [
                {
                  "nativeSrc": "1207:26:84",
                  "nodeType": "YulAssignment",
                  "src": "1207:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1219:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1219:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1230:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1230:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1215:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "1215:3:84"
                    },
                    "nativeSrc": "1215:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1215:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1207:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "1207:4:84"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1249:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1249:9:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "1264:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1264:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1280:3:84",
                                    "nodeType": "YulLiteral",
                                    "src": "1280:3:84",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1285:1:84",
                                    "nodeType": "YulLiteral",
                                    "src": "1285:1:84",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "1276:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "1276:3:84"
                                },
                                "nativeSrc": "1276:11:84",
                                "nodeType": "YulFunctionCall",
                                "src": "1276:11:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1289:1:84",
                                "nodeType": "YulLiteral",
                                "src": "1289:1:84",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "1272:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "1272:3:84"
                            },
                            "nativeSrc": "1272:19:84",
                            "nodeType": "YulFunctionCall",
                            "src": "1272:19:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1260:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1260:3:84"
                        },
                        "nativeSrc": "1260:32:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1260:32:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1242:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1242:6:84"
                    },
                    "nativeSrc": "1242:51:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1242:51:84"
                  },
                  "nativeSrc": "1242:51:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1242:51:84"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed",
            "nativeSrc": "1088:211:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1166:9:84",
                "nodeType": "YulTypedName",
                "src": "1166:9:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1177:6:84",
                "nodeType": "YulTypedName",
                "src": "1177:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1188:4:84",
                "nodeType": "YulTypedName",
                "src": "1188:4:84",
                "type": ""
              }
            ],
            "src": "1088:211:84"
          },
          {
            "body": {
              "nativeSrc": "1411:371:84",
              "nodeType": "YulBlock",
              "src": "1411:371:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1457:16:84",
                    "nodeType": "YulBlock",
                    "src": "1457:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1466:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1466:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1469:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1469:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1459:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1459:6:84"
                          },
                          "nativeSrc": "1459:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1459:12:84"
                        },
                        "nativeSrc": "1459:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1459:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1432:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "1432:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1441:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1441:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1428:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1428:3:84"
                        },
                        "nativeSrc": "1428:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1428:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1453:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1453:2:84",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1424:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "1424:3:84"
                    },
                    "nativeSrc": "1424:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1424:32:84"
                  },
                  "nativeSrc": "1421:52:84",
                  "nodeType": "YulIf",
                  "src": "1421:52:84"
                },
                {
                  "nativeSrc": "1482:33:84",
                  "nodeType": "YulAssignment",
                  "src": "1482:33:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1505:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1505:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1492:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1492:12:84"
                    },
                    "nativeSrc": "1492:23:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1492:23:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1482:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1482:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "1524:46:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1524:46:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1555:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1555:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1566:2:84",
                            "nodeType": "YulLiteral",
                            "src": "1566:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1551:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1551:3:84"
                        },
                        "nativeSrc": "1551:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1551:18:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1538:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1538:12:84"
                    },
                    "nativeSrc": "1538:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1538:32:84"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1528:6:84",
                      "nodeType": "YulTypedName",
                      "src": "1528:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1613:16:84",
                    "nodeType": "YulBlock",
                    "src": "1613:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1622:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1622:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1625:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1625:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1615:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1615:6:84"
                          },
                          "nativeSrc": "1615:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1615:12:84"
                        },
                        "nativeSrc": "1615:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1615:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1585:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "1585:6:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1593:18:84",
                        "nodeType": "YulLiteral",
                        "src": "1593:18:84",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1582:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "1582:2:84"
                    },
                    "nativeSrc": "1582:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1582:30:84"
                  },
                  "nativeSrc": "1579:50:84",
                  "nodeType": "YulIf",
                  "src": "1579:50:84"
                },
                {
                  "nativeSrc": "1638:84:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1638:84:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1694:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1694:9:84"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1705:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1705:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1690:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1690:3:84"
                        },
                        "nativeSrc": "1690:22:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1690:22:84"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1714:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "1714:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nativeSrc": "1664:25:84",
                      "nodeType": "YulIdentifier",
                      "src": "1664:25:84"
                    },
                    "nativeSrc": "1664:58:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1664:58:84"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nativeSrc": "1642:8:84",
                      "nodeType": "YulTypedName",
                      "src": "1642:8:84",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nativeSrc": "1652:8:84",
                      "nodeType": "YulTypedName",
                      "src": "1652:8:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1731:18:84",
                  "nodeType": "YulAssignment",
                  "src": "1731:18:84",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "1741:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "1741:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1731:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1731:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "1758:18:84",
                  "nodeType": "YulAssignment",
                  "src": "1758:18:84",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "1768:8:84",
                    "nodeType": "YulIdentifier",
                    "src": "1768:8:84"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "1758:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1758:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_string_calldata_ptr",
            "nativeSrc": "1304:478:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1361:9:84",
                "nodeType": "YulTypedName",
                "src": "1361:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1372:7:84",
                "nodeType": "YulTypedName",
                "src": "1372:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1384:6:84",
                "nodeType": "YulTypedName",
                "src": "1384:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1392:6:84",
                "nodeType": "YulTypedName",
                "src": "1392:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1400:6:84",
                "nodeType": "YulTypedName",
                "src": "1400:6:84",
                "type": ""
              }
            ],
            "src": "1304:478:84"
          },
          {
            "body": {
              "nativeSrc": "1892:87:84",
              "nodeType": "YulBlock",
              "src": "1892:87:84",
              "statements": [
                {
                  "nativeSrc": "1902:26:84",
                  "nodeType": "YulAssignment",
                  "src": "1902:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1914:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1914:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1925:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1925:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1910:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "1910:3:84"
                    },
                    "nativeSrc": "1910:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1910:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1902:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "1902:4:84"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1944:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1944:9:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "1959:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1959:6:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1967:4:84",
                            "nodeType": "YulLiteral",
                            "src": "1967:4:84",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1955:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1955:3:84"
                        },
                        "nativeSrc": "1955:17:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1955:17:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1937:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1937:6:84"
                    },
                    "nativeSrc": "1937:36:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1937:36:84"
                  },
                  "nativeSrc": "1937:36:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1937:36:84"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed",
            "nativeSrc": "1787:192:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1861:9:84",
                "nodeType": "YulTypedName",
                "src": "1861:9:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1872:6:84",
                "nodeType": "YulTypedName",
                "src": "1872:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1883:4:84",
                "nodeType": "YulTypedName",
                "src": "1883:4:84",
                "type": ""
              }
            ],
            "src": "1787:192:84"
          },
          {
            "body": {
              "nativeSrc": "2064:210:84",
              "nodeType": "YulBlock",
              "src": "2064:210:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2110:16:84",
                    "nodeType": "YulBlock",
                    "src": "2110:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2119:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2119:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2122:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2122:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2112:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "2112:6:84"
                          },
                          "nativeSrc": "2112:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "2112:12:84"
                        },
                        "nativeSrc": "2112:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "2112:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2085:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "2085:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2094:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2094:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2081:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2081:3:84"
                        },
                        "nativeSrc": "2081:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2081:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2106:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2106:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2077:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2077:3:84"
                    },
                    "nativeSrc": "2077:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2077:32:84"
                  },
                  "nativeSrc": "2074:52:84",
                  "nodeType": "YulIf",
                  "src": "2074:52:84"
                },
                {
                  "nativeSrc": "2135:29:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2135:29:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2154:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2154:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2148:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "2148:5:84"
                    },
                    "nativeSrc": "2148:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2148:16:84"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "2139:5:84",
                      "nodeType": "YulTypedName",
                      "src": "2139:5:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2228:16:84",
                    "nodeType": "YulBlock",
                    "src": "2228:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2237:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2237:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2240:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2240:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2230:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "2230:6:84"
                          },
                          "nativeSrc": "2230:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "2230:12:84"
                        },
                        "nativeSrc": "2230:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "2230:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "2186:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "2186:5:84"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "2197:5:84",
                                "nodeType": "YulIdentifier",
                                "src": "2197:5:84"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2208:3:84",
                                    "nodeType": "YulLiteral",
                                    "src": "2208:3:84",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2213:10:84",
                                    "nodeType": "YulLiteral",
                                    "src": "2213:10:84",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "2204:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "2204:3:84"
                                },
                                "nativeSrc": "2204:20:84",
                                "nodeType": "YulFunctionCall",
                                "src": "2204:20:84"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2193:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "2193:3:84"
                            },
                            "nativeSrc": "2193:32:84",
                            "nodeType": "YulFunctionCall",
                            "src": "2193:32:84"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2183:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "2183:2:84"
                        },
                        "nativeSrc": "2183:43:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2183:43:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2176:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2176:6:84"
                    },
                    "nativeSrc": "2176:51:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2176:51:84"
                  },
                  "nativeSrc": "2173:71:84",
                  "nodeType": "YulIf",
                  "src": "2173:71:84"
                },
                {
                  "nativeSrc": "2253:15:84",
                  "nodeType": "YulAssignment",
                  "src": "2253:15:84",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2263:5:84",
                    "nodeType": "YulIdentifier",
                    "src": "2263:5:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2253:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2253:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nativeSrc": "1984:290:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2030:9:84",
                "nodeType": "YulTypedName",
                "src": "2030:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2041:7:84",
                "nodeType": "YulTypedName",
                "src": "2041:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2053:6:84",
                "nodeType": "YulTypedName",
                "src": "2053:6:84",
                "type": ""
              }
            ],
            "src": "1984:290:84"
          },
          {
            "body": {
              "nativeSrc": "2453:244:84",
              "nodeType": "YulBlock",
              "src": "2453:244:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2470:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2470:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2481:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2481:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2463:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2463:6:84"
                    },
                    "nativeSrc": "2463:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2463:21:84"
                  },
                  "nativeSrc": "2463:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2463:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2504:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2504:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2515:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2515:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2500:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2500:3:84"
                        },
                        "nativeSrc": "2500:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2500:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2520:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2520:2:84",
                        "type": "",
                        "value": "54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2493:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2493:6:84"
                    },
                    "nativeSrc": "2493:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2493:30:84"
                  },
                  "nativeSrc": "2493:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2493:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2543:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2543:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2554:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2554:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2539:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2539:3:84"
                        },
                        "nativeSrc": "2539:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2539:18:84"
                      },
                      {
                        "hexValue": "5769746e6574507269636546656564734c69623a20756e636f6d706c69616e74",
                        "kind": "string",
                        "nativeSrc": "2559:34:84",
                        "nodeType": "YulLiteral",
                        "src": "2559:34:84",
                        "type": "",
                        "value": "WitnetPriceFeedsLib: uncompliant"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2532:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2532:6:84"
                    },
                    "nativeSrc": "2532:62:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2532:62:84"
                  },
                  "nativeSrc": "2532:62:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2532:62:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2614:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2614:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2625:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2625:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2610:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2610:3:84"
                        },
                        "nativeSrc": "2610:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2610:18:84"
                      },
                      {
                        "hexValue": "20736f6c76657220696d706c656d656e746174696f6e",
                        "kind": "string",
                        "nativeSrc": "2630:24:84",
                        "nodeType": "YulLiteral",
                        "src": "2630:24:84",
                        "type": "",
                        "value": " solver implementation"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2603:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2603:6:84"
                    },
                    "nativeSrc": "2603:52:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2603:52:84"
                  },
                  "nativeSrc": "2603:52:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2603:52:84"
                },
                {
                  "nativeSrc": "2664:27:84",
                  "nodeType": "YulAssignment",
                  "src": "2664:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2676:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2676:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2687:3:84",
                        "nodeType": "YulLiteral",
                        "src": "2687:3:84",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2672:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2672:3:84"
                    },
                    "nativeSrc": "2672:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2672:19:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2664:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "2664:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b83fd1362122226ebd334873b785b11c1b5cc459c0082afa04d9deda2e13ed4a__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2279:418:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2430:9:84",
                "nodeType": "YulTypedName",
                "src": "2430:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2444:4:84",
                "nodeType": "YulTypedName",
                "src": "2444:4:84",
                "type": ""
              }
            ],
            "src": "2279:418:84"
          },
          {
            "body": {
              "nativeSrc": "2802:227:84",
              "nodeType": "YulBlock",
              "src": "2802:227:84",
              "statements": [
                {
                  "nativeSrc": "2812:29:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2812:29:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nativeSrc": "2835:5:84",
                        "nodeType": "YulIdentifier",
                        "src": "2835:5:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2822:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "2822:12:84"
                    },
                    "nativeSrc": "2822:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2822:19:84"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "2816:2:84",
                      "nodeType": "YulTypedName",
                      "src": "2816:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2850:34:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2850:34:84",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "2864:3:84",
                        "nodeType": "YulLiteral",
                        "src": "2864:3:84",
                        "type": "",
                        "value": "208"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2869:14:84",
                        "nodeType": "YulLiteral",
                        "src": "2869:14:84",
                        "type": "",
                        "value": "0xffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nativeSrc": "2860:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2860:3:84"
                    },
                    "nativeSrc": "2860:24:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2860:24:84"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nativeSrc": "2854:2:84",
                      "nodeType": "YulTypedName",
                      "src": "2854:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2893:20:84",
                  "nodeType": "YulAssignment",
                  "src": "2893:20:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "2906:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "2906:2:84"
                      },
                      {
                        "name": "_2",
                        "nativeSrc": "2910:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "2910:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "2902:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2902:3:84"
                    },
                    "nativeSrc": "2902:11:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2902:11:84"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "2893:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "2893:5:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2944:79:84",
                    "nodeType": "YulBlock",
                    "src": "2944:79:84",
                    "statements": [
                      {
                        "nativeSrc": "2958:55:84",
                        "nodeType": "YulAssignment",
                        "src": "2958:55:84",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_1",
                                  "nativeSrc": "2975:2:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "2975:2:84"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2987:1:84",
                                          "nodeType": "YulLiteral",
                                          "src": "2987:1:84",
                                          "type": "",
                                          "value": "3"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nativeSrc": "2994:1:84",
                                              "nodeType": "YulLiteral",
                                              "src": "2994:1:84",
                                              "type": "",
                                              "value": "6"
                                            },
                                            {
                                              "name": "len",
                                              "nativeSrc": "2997:3:84",
                                              "nodeType": "YulIdentifier",
                                              "src": "2997:3:84"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nativeSrc": "2990:3:84",
                                            "nodeType": "YulIdentifier",
                                            "src": "2990:3:84"
                                          },
                                          "nativeSrc": "2990:11:84",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2990:11:84"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "2983:3:84",
                                        "nodeType": "YulIdentifier",
                                        "src": "2983:3:84"
                                      },
                                      "nativeSrc": "2983:19:84",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2983:19:84"
                                    },
                                    {
                                      "name": "_2",
                                      "nativeSrc": "3004:2:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "3004:2:84"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nativeSrc": "2979:3:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "2979:3:84"
                                  },
                                  "nativeSrc": "2979:28:84",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2979:28:84"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "2971:3:84",
                                "nodeType": "YulIdentifier",
                                "src": "2971:3:84"
                              },
                              "nativeSrc": "2971:37:84",
                              "nodeType": "YulFunctionCall",
                              "src": "2971:37:84"
                            },
                            {
                              "name": "_2",
                              "nativeSrc": "3010:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "3010:2:84"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "2967:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "2967:3:84"
                          },
                          "nativeSrc": "2967:46:84",
                          "nodeType": "YulFunctionCall",
                          "src": "2967:46:84"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "2958:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "2958:5:84"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "2928:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "2928:3:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2933:1:84",
                        "nodeType": "YulLiteral",
                        "src": "2933:1:84",
                        "type": "",
                        "value": "6"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "2925:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "2925:2:84"
                    },
                    "nativeSrc": "2925:10:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2925:10:84"
                  },
                  "nativeSrc": "2922:101:84",
                  "nodeType": "YulIf",
                  "src": "2922:101:84"
                }
              ]
            },
            "name": "convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes6",
            "nativeSrc": "2702:327:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "2777:5:84",
                "nodeType": "YulTypedName",
                "src": "2777:5:84",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "2784:3:84",
                "nodeType": "YulTypedName",
                "src": "2784:3:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "2792:5:84",
                "nodeType": "YulTypedName",
                "src": "2792:5:84",
                "type": ""
              }
            ],
            "src": "2702:327:84"
          },
          {
            "body": {
              "nativeSrc": "3208:229:84",
              "nodeType": "YulBlock",
              "src": "3208:229:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3225:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "3225:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3236:2:84",
                        "nodeType": "YulLiteral",
                        "src": "3236:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3218:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3218:6:84"
                    },
                    "nativeSrc": "3218:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3218:21:84"
                  },
                  "nativeSrc": "3218:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3218:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3259:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3259:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3270:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3270:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3255:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3255:3:84"
                        },
                        "nativeSrc": "3255:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3255:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3275:2:84",
                        "nodeType": "YulLiteral",
                        "src": "3275:2:84",
                        "type": "",
                        "value": "39"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3248:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3248:6:84"
                    },
                    "nativeSrc": "3248:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3248:30:84"
                  },
                  "nativeSrc": "3248:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3248:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3298:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3298:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3309:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3309:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3294:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3294:3:84"
                        },
                        "nativeSrc": "3294:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3294:18:84"
                      },
                      {
                        "hexValue": "5769746e6574507269636546656564734c69623a206261642063617074696f6e",
                        "kind": "string",
                        "nativeSrc": "3314:34:84",
                        "nodeType": "YulLiteral",
                        "src": "3314:34:84",
                        "type": "",
                        "value": "WitnetPriceFeedsLib: bad caption"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3287:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3287:6:84"
                    },
                    "nativeSrc": "3287:62:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3287:62:84"
                  },
                  "nativeSrc": "3287:62:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3287:62:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3369:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3369:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3380:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3380:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3365:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3365:3:84"
                        },
                        "nativeSrc": "3365:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3365:18:84"
                      },
                      {
                        "hexValue": "20707265666978",
                        "kind": "string",
                        "nativeSrc": "3385:9:84",
                        "nodeType": "YulLiteral",
                        "src": "3385:9:84",
                        "type": "",
                        "value": " prefix"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3358:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3358:6:84"
                    },
                    "nativeSrc": "3358:37:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3358:37:84"
                  },
                  "nativeSrc": "3358:37:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3358:37:84"
                },
                {
                  "nativeSrc": "3404:27:84",
                  "nodeType": "YulAssignment",
                  "src": "3404:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3416:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "3416:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3427:3:84",
                        "nodeType": "YulLiteral",
                        "src": "3427:3:84",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3412:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "3412:3:84"
                    },
                    "nativeSrc": "3412:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3412:19:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3404:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "3404:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_22d156239ab413033e2201bd93f1958cb1588ec5e33309c023c8b8027297d8e9__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "3034:403:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3185:9:84",
                "nodeType": "YulTypedName",
                "src": "3185:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3199:4:84",
                "nodeType": "YulTypedName",
                "src": "3199:4:84",
                "type": ""
              }
            ],
            "src": "3034:403:84"
          },
          {
            "body": {
              "nativeSrc": "3474:95:84",
              "nodeType": "YulBlock",
              "src": "3474:95:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3491:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3491:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3498:3:84",
                            "nodeType": "YulLiteral",
                            "src": "3498:3:84",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3503:10:84",
                            "nodeType": "YulLiteral",
                            "src": "3503:10:84",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3494:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3494:3:84"
                        },
                        "nativeSrc": "3494:20:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3494:20:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3484:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3484:6:84"
                    },
                    "nativeSrc": "3484:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3484:31:84"
                  },
                  "nativeSrc": "3484:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3484:31:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3531:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3531:1:84",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3534:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3534:4:84",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3524:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3524:6:84"
                    },
                    "nativeSrc": "3524:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3524:15:84"
                  },
                  "nativeSrc": "3524:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3524:15:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3555:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3555:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3558:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3558:4:84",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3548:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3548:6:84"
                    },
                    "nativeSrc": "3548:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3548:15:84"
                  },
                  "nativeSrc": "3548:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3548:15:84"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "3442:127:84",
            "nodeType": "YulFunctionDefinition",
            "src": "3442:127:84"
          },
          {
            "body": {
              "nativeSrc": "3622:77:84",
              "nodeType": "YulBlock",
              "src": "3622:77:84",
              "statements": [
                {
                  "nativeSrc": "3632:16:84",
                  "nodeType": "YulAssignment",
                  "src": "3632:16:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3643:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "3643:1:84"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "3646:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "3646:1:84"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3639:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "3639:3:84"
                    },
                    "nativeSrc": "3639:9:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3639:9:84"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "3632:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "3632:3:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3671:22:84",
                    "nodeType": "YulBlock",
                    "src": "3671:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "3673:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "3673:16:84"
                          },
                          "nativeSrc": "3673:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "3673:18:84"
                        },
                        "nativeSrc": "3673:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "3673:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3663:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "3663:1:84"
                      },
                      {
                        "name": "sum",
                        "nativeSrc": "3666:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "3666:3:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3660:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "3660:2:84"
                    },
                    "nativeSrc": "3660:10:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3660:10:84"
                  },
                  "nativeSrc": "3657:36:84",
                  "nodeType": "YulIf",
                  "src": "3657:36:84"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nativeSrc": "3574:125:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3605:1:84",
                "nodeType": "YulTypedName",
                "src": "3605:1:84",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3608:1:84",
                "nodeType": "YulTypedName",
                "src": "3608:1:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "3614:3:84",
                "nodeType": "YulTypedName",
                "src": "3614:3:84",
                "type": ""
              }
            ],
            "src": "3574:125:84"
          },
          {
            "body": {
              "nativeSrc": "3736:95:84",
              "nodeType": "YulBlock",
              "src": "3736:95:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3753:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3753:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3760:3:84",
                            "nodeType": "YulLiteral",
                            "src": "3760:3:84",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3765:10:84",
                            "nodeType": "YulLiteral",
                            "src": "3765:10:84",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3756:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3756:3:84"
                        },
                        "nativeSrc": "3756:20:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3756:20:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3746:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3746:6:84"
                    },
                    "nativeSrc": "3746:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3746:31:84"
                  },
                  "nativeSrc": "3746:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3746:31:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3793:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3793:1:84",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3796:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3796:4:84",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3786:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3786:6:84"
                    },
                    "nativeSrc": "3786:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3786:15:84"
                  },
                  "nativeSrc": "3786:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3786:15:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3817:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3817:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3820:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3820:4:84",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3810:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3810:6:84"
                    },
                    "nativeSrc": "3810:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3810:15:84"
                  },
                  "nativeSrc": "3810:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3810:15:84"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "3704:127:84",
            "nodeType": "YulFunctionDefinition",
            "src": "3704:127:84"
          },
          {
            "body": {
              "nativeSrc": "3868:95:84",
              "nodeType": "YulBlock",
              "src": "3868:95:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3885:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3885:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3892:3:84",
                            "nodeType": "YulLiteral",
                            "src": "3892:3:84",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3897:10:84",
                            "nodeType": "YulLiteral",
                            "src": "3897:10:84",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3888:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3888:3:84"
                        },
                        "nativeSrc": "3888:20:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3888:20:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3878:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3878:6:84"
                    },
                    "nativeSrc": "3878:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3878:31:84"
                  },
                  "nativeSrc": "3878:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3878:31:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3925:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3925:1:84",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3928:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3928:4:84",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3918:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3918:6:84"
                    },
                    "nativeSrc": "3918:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3918:15:84"
                  },
                  "nativeSrc": "3918:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3918:15:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3949:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3949:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3952:4:84",
                        "nodeType": "YulLiteral",
                        "src": "3952:4:84",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3942:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3942:6:84"
                    },
                    "nativeSrc": "3942:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3942:15:84"
                  },
                  "nativeSrc": "3942:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3942:15:84"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "3836:127:84",
            "nodeType": "YulFunctionDefinition",
            "src": "3836:127:84"
          },
          {
            "body": {
              "nativeSrc": "4017:79:84",
              "nodeType": "YulBlock",
              "src": "4017:79:84",
              "statements": [
                {
                  "nativeSrc": "4027:17:84",
                  "nodeType": "YulAssignment",
                  "src": "4027:17:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "4039:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "4039:1:84"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "4042:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "4042:1:84"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "4035:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4035:3:84"
                    },
                    "nativeSrc": "4035:9:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4035:9:84"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "4027:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "4027:4:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4068:22:84",
                    "nodeType": "YulBlock",
                    "src": "4068:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "4070:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "4070:16:84"
                          },
                          "nativeSrc": "4070:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "4070:18:84"
                        },
                        "nativeSrc": "4070:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "4070:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "4059:4:84",
                        "nodeType": "YulIdentifier",
                        "src": "4059:4:84"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "4065:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "4065:1:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4056:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "4056:2:84"
                    },
                    "nativeSrc": "4056:11:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4056:11:84"
                  },
                  "nativeSrc": "4053:37:84",
                  "nodeType": "YulIf",
                  "src": "4053:37:84"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "3968:128:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3999:1:84",
                "nodeType": "YulTypedName",
                "src": "3999:1:84",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "4002:1:84",
                "nodeType": "YulTypedName",
                "src": "4002:1:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "4008:4:84",
                "nodeType": "YulTypedName",
                "src": "4008:4:84",
                "type": ""
              }
            ],
            "src": "3968:128:84"
          },
          {
            "body": {
              "nativeSrc": "4275:223:84",
              "nodeType": "YulBlock",
              "src": "4275:223:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4292:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "4292:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4303:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4303:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4285:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4285:6:84"
                    },
                    "nativeSrc": "4285:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4285:21:84"
                  },
                  "nativeSrc": "4285:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4285:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4326:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4326:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4337:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4337:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4322:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4322:3:84"
                        },
                        "nativeSrc": "4322:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4322:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4342:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4342:2:84",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4315:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4315:6:84"
                    },
                    "nativeSrc": "4315:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4315:30:84"
                  },
                  "nativeSrc": "4315:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4315:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4365:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4365:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4376:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4376:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4361:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4361:3:84"
                        },
                        "nativeSrc": "4361:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4361:18:84"
                      },
                      {
                        "hexValue": "5769746e6574507269636546656564734c69623a2062616420646563696d616c",
                        "kind": "string",
                        "nativeSrc": "4381:34:84",
                        "nodeType": "YulLiteral",
                        "src": "4381:34:84",
                        "type": "",
                        "value": "WitnetPriceFeedsLib: bad decimal"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4354:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4354:6:84"
                    },
                    "nativeSrc": "4354:62:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4354:62:84"
                  },
                  "nativeSrc": "4354:62:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4354:62:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4436:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4436:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4447:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4447:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4432:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4432:3:84"
                        },
                        "nativeSrc": "4432:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4432:18:84"
                      },
                      {
                        "hexValue": "73",
                        "kind": "string",
                        "nativeSrc": "4452:3:84",
                        "nodeType": "YulLiteral",
                        "src": "4452:3:84",
                        "type": "",
                        "value": "s"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4425:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4425:6:84"
                    },
                    "nativeSrc": "4425:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4425:31:84"
                  },
                  "nativeSrc": "4425:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4425:31:84"
                },
                {
                  "nativeSrc": "4465:27:84",
                  "nodeType": "YulAssignment",
                  "src": "4465:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4477:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "4477:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4488:3:84",
                        "nodeType": "YulLiteral",
                        "src": "4488:3:84",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4473:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4473:3:84"
                    },
                    "nativeSrc": "4473:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4473:19:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4465:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "4465:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a9594db15eb27b6c72c111e17e3bb392ab962a926b4d3310ac0309d91ddf668f__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "4101:397:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4252:9:84",
                "nodeType": "YulTypedName",
                "src": "4252:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4266:4:84",
                "nodeType": "YulTypedName",
                "src": "4266:4:84",
                "type": ""
              }
            ],
            "src": "4101:397:84"
          },
          {
            "body": {
              "nativeSrc": "4704:240:84",
              "nodeType": "YulBlock",
              "src": "4704:240:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4721:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "4721:3:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4730:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "4730:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4742:3:84",
                                "nodeType": "YulLiteral",
                                "src": "4742:3:84",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4747:3:84",
                                "nodeType": "YulLiteral",
                                "src": "4747:3:84",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4738:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4738:3:84"
                            },
                            "nativeSrc": "4738:13:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4738:13:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4726:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4726:3:84"
                        },
                        "nativeSrc": "4726:26:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4726:26:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4714:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4714:6:84"
                    },
                    "nativeSrc": "4714:39:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4714:39:84"
                  },
                  "nativeSrc": "4714:39:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4714:39:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4773:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4773:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4778:1:84",
                            "nodeType": "YulLiteral",
                            "src": "4778:1:84",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4769:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4769:3:84"
                        },
                        "nativeSrc": "4769:11:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4769:11:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4790:2:84",
                                "nodeType": "YulLiteral",
                                "src": "4790:2:84",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "4794:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "4794:6:84"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4786:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4786:3:84"
                            },
                            "nativeSrc": "4786:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4786:15:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4807:26:84",
                                "nodeType": "YulLiteral",
                                "src": "4807:26:84",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4803:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4803:3:84"
                            },
                            "nativeSrc": "4803:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4803:31:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4782:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4782:3:84"
                        },
                        "nativeSrc": "4782:53:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4782:53:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4762:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4762:6:84"
                    },
                    "nativeSrc": "4762:74:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4762:74:84"
                  },
                  "nativeSrc": "4762:74:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4762:74:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4856:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4856:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4861:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4861:2:84",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4852:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4852:3:84"
                        },
                        "nativeSrc": "4852:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4852:12:84"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "4866:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "4866:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4845:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4845:6:84"
                    },
                    "nativeSrc": "4845:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4845:28:84"
                  },
                  "nativeSrc": "4845:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4845:28:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4893:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4893:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4898:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4898:2:84",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4889:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4889:3:84"
                        },
                        "nativeSrc": "4889:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4889:12:84"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "4903:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "4903:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4882:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4882:6:84"
                    },
                    "nativeSrc": "4882:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4882:28:84"
                  },
                  "nativeSrc": "4882:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4882:28:84"
                },
                {
                  "nativeSrc": "4919:19:84",
                  "nodeType": "YulAssignment",
                  "src": "4919:19:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4930:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "4930:3:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4935:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4935:2:84",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4926:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4926:3:84"
                    },
                    "nativeSrc": "4926:12:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4926:12:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4919:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4919:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4503:441:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4656:3:84",
                "nodeType": "YulTypedName",
                "src": "4656:3:84",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4661:6:84",
                "nodeType": "YulTypedName",
                "src": "4661:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4669:6:84",
                "nodeType": "YulTypedName",
                "src": "4669:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4677:6:84",
                "nodeType": "YulTypedName",
                "src": "4677:6:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4685:6:84",
                "nodeType": "YulTypedName",
                "src": "4685:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4696:3:84",
                "nodeType": "YulTypedName",
                "src": "4696:3:84",
                "type": ""
              }
            ],
            "src": "4503:441:84"
          },
          {
            "body": {
              "nativeSrc": "5152:221:84",
              "nodeType": "YulBlock",
              "src": "5152:221:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5175:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5175:3:84"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "5180:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5180:6:84"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "5188:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5188:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "5162:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "5162:12:84"
                    },
                    "nativeSrc": "5162:33:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5162:33:84"
                  },
                  "nativeSrc": "5162:33:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5162:33:84"
                },
                {
                  "nativeSrc": "5204:26:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5204:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5218:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5218:3:84"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "5223:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5223:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5214:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5214:3:84"
                    },
                    "nativeSrc": "5214:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5214:16:84"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "5208:2:84",
                      "nodeType": "YulTypedName",
                      "src": "5208:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "5246:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "5246:2:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5250:1:84",
                        "nodeType": "YulLiteral",
                        "src": "5250:1:84",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5239:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5239:6:84"
                    },
                    "nativeSrc": "5239:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5239:13:84"
                  },
                  "nativeSrc": "5239:13:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5239:13:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "5274:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "5274:2:84"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "5278:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5278:6:84"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "5286:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5286:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "5261:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "5261:12:84"
                    },
                    "nativeSrc": "5261:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5261:32:84"
                  },
                  "nativeSrc": "5261:32:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5261:32:84"
                },
                {
                  "nativeSrc": "5302:25:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5302:25:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "5316:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "5316:2:84"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "5320:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5320:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5312:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5312:3:84"
                    },
                    "nativeSrc": "5312:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5312:15:84"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nativeSrc": "5306:2:84",
                      "nodeType": "YulTypedName",
                      "src": "5306:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nativeSrc": "5343:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "5343:2:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5347:1:84",
                        "nodeType": "YulLiteral",
                        "src": "5347:1:84",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5336:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5336:6:84"
                    },
                    "nativeSrc": "5336:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5336:13:84"
                  },
                  "nativeSrc": "5336:13:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5336:13:84"
                },
                {
                  "nativeSrc": "5358:9:84",
                  "nodeType": "YulAssignment",
                  "src": "5358:9:84",
                  "value": {
                    "name": "_2",
                    "nativeSrc": "5365:2:84",
                    "nodeType": "YulIdentifier",
                    "src": "5365:2:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "5358:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5358:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4949:424:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "5104:3:84",
                "nodeType": "YulTypedName",
                "src": "5104:3:84",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "5109:6:84",
                "nodeType": "YulTypedName",
                "src": "5109:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "5117:6:84",
                "nodeType": "YulTypedName",
                "src": "5117:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "5125:6:84",
                "nodeType": "YulTypedName",
                "src": "5125:6:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "5133:6:84",
                "nodeType": "YulTypedName",
                "src": "5133:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "5144:3:84",
                "nodeType": "YulTypedName",
                "src": "5144:3:84",
                "type": ""
              }
            ],
            "src": "4949:424:84"
          },
          {
            "body": {
              "nativeSrc": "5425:88:84",
              "nodeType": "YulBlock",
              "src": "5425:88:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5456:22:84",
                    "nodeType": "YulBlock",
                    "src": "5456:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "5458:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "5458:16:84"
                          },
                          "nativeSrc": "5458:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "5458:18:84"
                        },
                        "nativeSrc": "5458:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "5458:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "5441:5:84",
                        "nodeType": "YulIdentifier",
                        "src": "5441:5:84"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5452:1:84",
                            "nodeType": "YulLiteral",
                            "src": "5452:1:84",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nativeSrc": "5448:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5448:3:84"
                        },
                        "nativeSrc": "5448:6:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5448:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "5438:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "5438:2:84"
                    },
                    "nativeSrc": "5438:17:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5438:17:84"
                  },
                  "nativeSrc": "5435:43:84",
                  "nodeType": "YulIf",
                  "src": "5435:43:84"
                },
                {
                  "nativeSrc": "5487:20:84",
                  "nodeType": "YulAssignment",
                  "src": "5487:20:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "5498:5:84",
                        "nodeType": "YulIdentifier",
                        "src": "5498:5:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5505:1:84",
                        "nodeType": "YulLiteral",
                        "src": "5505:1:84",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5494:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5494:3:84"
                    },
                    "nativeSrc": "5494:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5494:13:84"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nativeSrc": "5487:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5487:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nativeSrc": "5378:135:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "5407:5:84",
                "nodeType": "YulTypedName",
                "src": "5407:5:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nativeSrc": "5417:3:84",
                "nodeType": "YulTypedName",
                "src": "5417:3:84",
                "type": ""
              }
            ],
            "src": "5378:135:84"
          },
          {
            "body": {
              "nativeSrc": "5570:116:84",
              "nodeType": "YulBlock",
              "src": "5570:116:84",
              "statements": [
                {
                  "nativeSrc": "5580:20:84",
                  "nodeType": "YulAssignment",
                  "src": "5580:20:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "5595:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "5595:1:84"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "5598:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "5598:1:84"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "5591:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5591:3:84"
                    },
                    "nativeSrc": "5591:9:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5591:9:84"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "5580:7:84",
                      "nodeType": "YulIdentifier",
                      "src": "5580:7:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "5658:22:84",
                    "nodeType": "YulBlock",
                    "src": "5658:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "5660:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "5660:16:84"
                          },
                          "nativeSrc": "5660:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "5660:18:84"
                        },
                        "nativeSrc": "5660:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "5660:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "5629:1:84",
                                "nodeType": "YulIdentifier",
                                "src": "5629:1:84"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "5622:6:84",
                              "nodeType": "YulIdentifier",
                              "src": "5622:6:84"
                            },
                            "nativeSrc": "5622:9:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5622:9:84"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "5636:1:84",
                                "nodeType": "YulIdentifier",
                                "src": "5636:1:84"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nativeSrc": "5643:7:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "5643:7:84"
                                  },
                                  {
                                    "name": "x",
                                    "nativeSrc": "5652:1:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "5652:1:84"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "5639:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "5639:3:84"
                                },
                                "nativeSrc": "5639:15:84",
                                "nodeType": "YulFunctionCall",
                                "src": "5639:15:84"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nativeSrc": "5633:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "5633:2:84"
                            },
                            "nativeSrc": "5633:22:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5633:22:84"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "5619:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "5619:2:84"
                        },
                        "nativeSrc": "5619:37:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5619:37:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "5612:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5612:6:84"
                    },
                    "nativeSrc": "5612:45:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5612:45:84"
                  },
                  "nativeSrc": "5609:71:84",
                  "nodeType": "YulIf",
                  "src": "5609:71:84"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nativeSrc": "5518:168:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "5549:1:84",
                "nodeType": "YulTypedName",
                "src": "5549:1:84",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "5552:1:84",
                "nodeType": "YulTypedName",
                "src": "5552:1:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "5558:7:84",
                "nodeType": "YulTypedName",
                "src": "5558:7:84",
                "type": ""
              }
            ],
            "src": "5518:168:84"
          },
          {
            "body": {
              "nativeSrc": "5755:352:84",
              "nodeType": "YulBlock",
              "src": "5755:352:84",
              "statements": [
                {
                  "nativeSrc": "5765:16:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5765:16:84",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5780:1:84",
                    "nodeType": "YulLiteral",
                    "src": "5780:1:84",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "power_1",
                      "nativeSrc": "5769:7:84",
                      "nodeType": "YulTypedName",
                      "src": "5769:7:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "5790:10:84",
                  "nodeType": "YulAssignment",
                  "src": "5790:10:84",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5799:1:84",
                    "nodeType": "YulLiteral",
                    "src": "5799:1:84",
                    "type": "",
                    "value": "1"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "5790:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "5790:5:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "5809:13:84",
                  "nodeType": "YulAssignment",
                  "src": "5809:13:84",
                  "value": {
                    "name": "_base",
                    "nativeSrc": "5817:5:84",
                    "nodeType": "YulIdentifier",
                    "src": "5817:5:84"
                  },
                  "variableNames": [
                    {
                      "name": "base",
                      "nativeSrc": "5809:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "5809:4:84"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "5873:228:84",
                    "nodeType": "YulBlock",
                    "src": "5873:228:84",
                    "statements": [
                      {
                        "body": {
                          "nativeSrc": "5918:22:84",
                          "nodeType": "YulBlock",
                          "src": "5918:22:84",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "functionName": {
                                  "name": "panic_error_0x11",
                                  "nativeSrc": "5920:16:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "5920:16:84"
                                },
                                "nativeSrc": "5920:18:84",
                                "nodeType": "YulFunctionCall",
                                "src": "5920:18:84"
                              },
                              "nativeSrc": "5920:18:84",
                              "nodeType": "YulExpressionStatement",
                              "src": "5920:18:84"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "5893:4:84",
                              "nodeType": "YulIdentifier",
                              "src": "5893:4:84"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "5907:1:84",
                                      "nodeType": "YulLiteral",
                                      "src": "5907:1:84",
                                      "type": "",
                                      "value": "0"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "5903:3:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "5903:3:84"
                                  },
                                  "nativeSrc": "5903:6:84",
                                  "nodeType": "YulFunctionCall",
                                  "src": "5903:6:84"
                                },
                                {
                                  "name": "base",
                                  "nativeSrc": "5911:4:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "5911:4:84"
                                }
                              ],
                              "functionName": {
                                "name": "div",
                                "nativeSrc": "5899:3:84",
                                "nodeType": "YulIdentifier",
                                "src": "5899:3:84"
                              },
                              "nativeSrc": "5899:17:84",
                              "nodeType": "YulFunctionCall",
                              "src": "5899:17:84"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nativeSrc": "5890:2:84",
                            "nodeType": "YulIdentifier",
                            "src": "5890:2:84"
                          },
                          "nativeSrc": "5890:27:84",
                          "nodeType": "YulFunctionCall",
                          "src": "5890:27:84"
                        },
                        "nativeSrc": "5887:53:84",
                        "nodeType": "YulIf",
                        "src": "5887:53:84"
                      },
                      {
                        "body": {
                          "nativeSrc": "5979:29:84",
                          "nodeType": "YulBlock",
                          "src": "5979:29:84",
                          "statements": [
                            {
                              "nativeSrc": "5981:25:84",
                              "nodeType": "YulAssignment",
                              "src": "5981:25:84",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power",
                                    "nativeSrc": "5994:5:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "5994:5:84"
                                  },
                                  {
                                    "name": "base",
                                    "nativeSrc": "6001:4:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "6001:4:84"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "5990:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "5990:3:84"
                                },
                                "nativeSrc": "5990:16:84",
                                "nodeType": "YulFunctionCall",
                                "src": "5990:16:84"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nativeSrc": "5981:5:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "5981:5:84"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "exponent",
                              "nativeSrc": "5960:8:84",
                              "nodeType": "YulIdentifier",
                              "src": "5960:8:84"
                            },
                            {
                              "name": "power_1",
                              "nativeSrc": "5970:7:84",
                              "nodeType": "YulIdentifier",
                              "src": "5970:7:84"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "5956:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5956:3:84"
                          },
                          "nativeSrc": "5956:22:84",
                          "nodeType": "YulFunctionCall",
                          "src": "5956:22:84"
                        },
                        "nativeSrc": "5953:55:84",
                        "nodeType": "YulIf",
                        "src": "5953:55:84"
                      },
                      {
                        "nativeSrc": "6021:23:84",
                        "nodeType": "YulAssignment",
                        "src": "6021:23:84",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "6033:4:84",
                              "nodeType": "YulIdentifier",
                              "src": "6033:4:84"
                            },
                            {
                              "name": "base",
                              "nativeSrc": "6039:4:84",
                              "nodeType": "YulIdentifier",
                              "src": "6039:4:84"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nativeSrc": "6029:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "6029:3:84"
                          },
                          "nativeSrc": "6029:15:84",
                          "nodeType": "YulFunctionCall",
                          "src": "6029:15:84"
                        },
                        "variableNames": [
                          {
                            "name": "base",
                            "nativeSrc": "6021:4:84",
                            "nodeType": "YulIdentifier",
                            "src": "6021:4:84"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "6057:34:84",
                        "nodeType": "YulAssignment",
                        "src": "6057:34:84",
                        "value": {
                          "arguments": [
                            {
                              "name": "power_1",
                              "nativeSrc": "6073:7:84",
                              "nodeType": "YulIdentifier",
                              "src": "6073:7:84"
                            },
                            {
                              "name": "exponent",
                              "nativeSrc": "6082:8:84",
                              "nodeType": "YulIdentifier",
                              "src": "6082:8:84"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nativeSrc": "6069:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "6069:3:84"
                          },
                          "nativeSrc": "6069:22:84",
                          "nodeType": "YulFunctionCall",
                          "src": "6069:22:84"
                        },
                        "variableNames": [
                          {
                            "name": "exponent",
                            "nativeSrc": "6057:8:84",
                            "nodeType": "YulIdentifier",
                            "src": "6057:8:84"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nativeSrc": "5842:8:84",
                        "nodeType": "YulIdentifier",
                        "src": "5842:8:84"
                      },
                      {
                        "name": "power_1",
                        "nativeSrc": "5852:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "5852:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "5839:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "5839:2:84"
                    },
                    "nativeSrc": "5839:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5839:21:84"
                  },
                  "nativeSrc": "5831:270:84",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "5861:3:84",
                    "nodeType": "YulBlock",
                    "src": "5861:3:84",
                    "statements": []
                  },
                  "pre": {
                    "nativeSrc": "5835:3:84",
                    "nodeType": "YulBlock",
                    "src": "5835:3:84",
                    "statements": []
                  },
                  "src": "5831:270:84"
                }
              ]
            },
            "name": "checked_exp_helper",
            "nativeSrc": "5691:416:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "_base",
                "nativeSrc": "5719:5:84",
                "nodeType": "YulTypedName",
                "src": "5719:5:84",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "5726:8:84",
                "nodeType": "YulTypedName",
                "src": "5726:8:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "5739:5:84",
                "nodeType": "YulTypedName",
                "src": "5739:5:84",
                "type": ""
              },
              {
                "name": "base",
                "nativeSrc": "5746:4:84",
                "nodeType": "YulTypedName",
                "src": "5746:4:84",
                "type": ""
              }
            ],
            "src": "5691:416:84"
          },
          {
            "body": {
              "nativeSrc": "6171:747:84",
              "nodeType": "YulBlock",
              "src": "6171:747:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6209:52:84",
                    "nodeType": "YulBlock",
                    "src": "6209:52:84",
                    "statements": [
                      {
                        "nativeSrc": "6223:10:84",
                        "nodeType": "YulAssignment",
                        "src": "6223:10:84",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "6232:1:84",
                          "nodeType": "YulLiteral",
                          "src": "6232:1:84",
                          "type": "",
                          "value": "1"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "6223:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "6223:5:84"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "6246:5:84",
                        "nodeType": "YulLeave",
                        "src": "6246:5:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nativeSrc": "6191:8:84",
                        "nodeType": "YulIdentifier",
                        "src": "6191:8:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "6184:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6184:6:84"
                    },
                    "nativeSrc": "6184:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6184:16:84"
                  },
                  "nativeSrc": "6181:80:84",
                  "nodeType": "YulIf",
                  "src": "6181:80:84"
                },
                {
                  "body": {
                    "nativeSrc": "6294:52:84",
                    "nodeType": "YulBlock",
                    "src": "6294:52:84",
                    "statements": [
                      {
                        "nativeSrc": "6308:10:84",
                        "nodeType": "YulAssignment",
                        "src": "6308:10:84",
                        "value": {
                          "kind": "number",
                          "nativeSrc": "6317:1:84",
                          "nodeType": "YulLiteral",
                          "src": "6317:1:84",
                          "type": "",
                          "value": "0"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "6308:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "6308:5:84"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "6331:5:84",
                        "nodeType": "YulLeave",
                        "src": "6331:5:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "6280:4:84",
                        "nodeType": "YulIdentifier",
                        "src": "6280:4:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "6273:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6273:6:84"
                    },
                    "nativeSrc": "6273:12:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6273:12:84"
                  },
                  "nativeSrc": "6270:76:84",
                  "nodeType": "YulIf",
                  "src": "6270:76:84"
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "6382:52:84",
                        "nodeType": "YulBlock",
                        "src": "6382:52:84",
                        "statements": [
                          {
                            "nativeSrc": "6396:10:84",
                            "nodeType": "YulAssignment",
                            "src": "6396:10:84",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "6405:1:84",
                              "nodeType": "YulLiteral",
                              "src": "6405:1:84",
                              "type": "",
                              "value": "1"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nativeSrc": "6396:5:84",
                                "nodeType": "YulIdentifier",
                                "src": "6396:5:84"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "6419:5:84",
                            "nodeType": "YulLeave",
                            "src": "6419:5:84"
                          }
                        ]
                      },
                      "nativeSrc": "6375:59:84",
                      "nodeType": "YulCase",
                      "src": "6375:59:84",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "6380:1:84",
                        "nodeType": "YulLiteral",
                        "src": "6380:1:84",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "6450:123:84",
                        "nodeType": "YulBlock",
                        "src": "6450:123:84",
                        "statements": [
                          {
                            "body": {
                              "nativeSrc": "6485:22:84",
                              "nodeType": "YulBlock",
                              "src": "6485:22:84",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "panic_error_0x11",
                                      "nativeSrc": "6487:16:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "6487:16:84"
                                    },
                                    "nativeSrc": "6487:18:84",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6487:18:84"
                                  },
                                  "nativeSrc": "6487:18:84",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "6487:18:84"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nativeSrc": "6470:8:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "6470:8:84"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "6480:3:84",
                                  "nodeType": "YulLiteral",
                                  "src": "6480:3:84",
                                  "type": "",
                                  "value": "255"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nativeSrc": "6467:2:84",
                                "nodeType": "YulIdentifier",
                                "src": "6467:2:84"
                              },
                              "nativeSrc": "6467:17:84",
                              "nodeType": "YulFunctionCall",
                              "src": "6467:17:84"
                            },
                            "nativeSrc": "6464:43:84",
                            "nodeType": "YulIf",
                            "src": "6464:43:84"
                          },
                          {
                            "nativeSrc": "6520:25:84",
                            "nodeType": "YulAssignment",
                            "src": "6520:25:84",
                            "value": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nativeSrc": "6533:8:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:8:84"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "6543:1:84",
                                  "nodeType": "YulLiteral",
                                  "src": "6543:1:84",
                                  "type": "",
                                  "value": "1"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "6529:3:84",
                                "nodeType": "YulIdentifier",
                                "src": "6529:3:84"
                              },
                              "nativeSrc": "6529:16:84",
                              "nodeType": "YulFunctionCall",
                              "src": "6529:16:84"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nativeSrc": "6520:5:84",
                                "nodeType": "YulIdentifier",
                                "src": "6520:5:84"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "6558:5:84",
                            "nodeType": "YulLeave",
                            "src": "6558:5:84"
                          }
                        ]
                      },
                      "nativeSrc": "6443:130:84",
                      "nodeType": "YulCase",
                      "src": "6443:130:84",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "6448:1:84",
                        "nodeType": "YulLiteral",
                        "src": "6448:1:84",
                        "type": "",
                        "value": "2"
                      }
                    }
                  ],
                  "expression": {
                    "name": "base",
                    "nativeSrc": "6362:4:84",
                    "nodeType": "YulIdentifier",
                    "src": "6362:4:84"
                  },
                  "nativeSrc": "6355:218:84",
                  "nodeType": "YulSwitch",
                  "src": "6355:218:84"
                },
                {
                  "body": {
                    "nativeSrc": "6671:70:84",
                    "nodeType": "YulBlock",
                    "src": "6671:70:84",
                    "statements": [
                      {
                        "nativeSrc": "6685:28:84",
                        "nodeType": "YulAssignment",
                        "src": "6685:28:84",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nativeSrc": "6698:4:84",
                              "nodeType": "YulIdentifier",
                              "src": "6698:4:84"
                            },
                            {
                              "name": "exponent",
                              "nativeSrc": "6704:8:84",
                              "nodeType": "YulIdentifier",
                              "src": "6704:8:84"
                            }
                          ],
                          "functionName": {
                            "name": "exp",
                            "nativeSrc": "6694:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "6694:3:84"
                          },
                          "nativeSrc": "6694:19:84",
                          "nodeType": "YulFunctionCall",
                          "src": "6694:19:84"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nativeSrc": "6685:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "6685:5:84"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "6726:5:84",
                        "nodeType": "YulLeave",
                        "src": "6726:5:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nativeSrc": "6595:4:84",
                                "nodeType": "YulIdentifier",
                                "src": "6595:4:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "6601:2:84",
                                "nodeType": "YulLiteral",
                                "src": "6601:2:84",
                                "type": "",
                                "value": "11"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "6592:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "6592:2:84"
                            },
                            "nativeSrc": "6592:12:84",
                            "nodeType": "YulFunctionCall",
                            "src": "6592:12:84"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nativeSrc": "6609:8:84",
                                "nodeType": "YulIdentifier",
                                "src": "6609:8:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "6619:2:84",
                                "nodeType": "YulLiteral",
                                "src": "6619:2:84",
                                "type": "",
                                "value": "78"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "6606:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "6606:2:84"
                            },
                            "nativeSrc": "6606:16:84",
                            "nodeType": "YulFunctionCall",
                            "src": "6606:16:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "6588:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6588:3:84"
                        },
                        "nativeSrc": "6588:35:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6588:35:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nativeSrc": "6632:4:84",
                                "nodeType": "YulIdentifier",
                                "src": "6632:4:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "6638:3:84",
                                "nodeType": "YulLiteral",
                                "src": "6638:3:84",
                                "type": "",
                                "value": "307"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "6629:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "6629:2:84"
                            },
                            "nativeSrc": "6629:13:84",
                            "nodeType": "YulFunctionCall",
                            "src": "6629:13:84"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nativeSrc": "6647:8:84",
                                "nodeType": "YulIdentifier",
                                "src": "6647:8:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "6657:2:84",
                                "nodeType": "YulLiteral",
                                "src": "6657:2:84",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nativeSrc": "6644:2:84",
                              "nodeType": "YulIdentifier",
                              "src": "6644:2:84"
                            },
                            "nativeSrc": "6644:16:84",
                            "nodeType": "YulFunctionCall",
                            "src": "6644:16:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "6625:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6625:3:84"
                        },
                        "nativeSrc": "6625:36:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6625:36:84"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "6585:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "6585:2:84"
                    },
                    "nativeSrc": "6585:77:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6585:77:84"
                  },
                  "nativeSrc": "6582:159:84",
                  "nodeType": "YulIf",
                  "src": "6582:159:84"
                },
                {
                  "nativeSrc": "6750:57:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6750:57:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "6792:4:84",
                        "nodeType": "YulIdentifier",
                        "src": "6792:4:84"
                      },
                      {
                        "name": "exponent",
                        "nativeSrc": "6798:8:84",
                        "nodeType": "YulIdentifier",
                        "src": "6798:8:84"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_helper",
                      "nativeSrc": "6773:18:84",
                      "nodeType": "YulIdentifier",
                      "src": "6773:18:84"
                    },
                    "nativeSrc": "6773:34:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6773:34:84"
                  },
                  "variables": [
                    {
                      "name": "power_1",
                      "nativeSrc": "6754:7:84",
                      "nodeType": "YulTypedName",
                      "src": "6754:7:84",
                      "type": ""
                    },
                    {
                      "name": "base_1",
                      "nativeSrc": "6763:6:84",
                      "nodeType": "YulTypedName",
                      "src": "6763:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "6852:22:84",
                    "nodeType": "YulBlock",
                    "src": "6852:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "6854:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "6854:16:84"
                          },
                          "nativeSrc": "6854:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "6854:18:84"
                        },
                        "nativeSrc": "6854:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "6854:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nativeSrc": "6822:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "6822:7:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "6839:1:84",
                                "nodeType": "YulLiteral",
                                "src": "6839:1:84",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "6835:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "6835:3:84"
                            },
                            "nativeSrc": "6835:6:84",
                            "nodeType": "YulFunctionCall",
                            "src": "6835:6:84"
                          },
                          {
                            "name": "base_1",
                            "nativeSrc": "6843:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "6843:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "div",
                          "nativeSrc": "6831:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6831:3:84"
                        },
                        "nativeSrc": "6831:19:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6831:19:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "6819:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "6819:2:84"
                    },
                    "nativeSrc": "6819:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6819:32:84"
                  },
                  "nativeSrc": "6816:58:84",
                  "nodeType": "YulIf",
                  "src": "6816:58:84"
                },
                {
                  "nativeSrc": "6883:29:84",
                  "nodeType": "YulAssignment",
                  "src": "6883:29:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nativeSrc": "6896:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "6896:7:84"
                      },
                      {
                        "name": "base_1",
                        "nativeSrc": "6905:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "6905:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "6892:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "6892:3:84"
                    },
                    "nativeSrc": "6892:20:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6892:20:84"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "6883:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "6883:5:84"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_unsigned",
            "nativeSrc": "6112:806:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nativeSrc": "6142:4:84",
                "nodeType": "YulTypedName",
                "src": "6142:4:84",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "6148:8:84",
                "nodeType": "YulTypedName",
                "src": "6148:8:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "6161:5:84",
                "nodeType": "YulTypedName",
                "src": "6161:5:84",
                "type": ""
              }
            ],
            "src": "6112:806:84"
          },
          {
            "body": {
              "nativeSrc": "6993:61:84",
              "nodeType": "YulBlock",
              "src": "6993:61:84",
              "statements": [
                {
                  "nativeSrc": "7003:45:84",
                  "nodeType": "YulAssignment",
                  "src": "7003:45:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nativeSrc": "7033:4:84",
                        "nodeType": "YulIdentifier",
                        "src": "7033:4:84"
                      },
                      {
                        "name": "exponent",
                        "nativeSrc": "7039:8:84",
                        "nodeType": "YulIdentifier",
                        "src": "7039:8:84"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_unsigned",
                      "nativeSrc": "7012:20:84",
                      "nodeType": "YulIdentifier",
                      "src": "7012:20:84"
                    },
                    "nativeSrc": "7012:36:84",
                    "nodeType": "YulFunctionCall",
                    "src": "7012:36:84"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nativeSrc": "7003:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "7003:5:84"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_t_uint256_t_uint256",
            "nativeSrc": "6923:131:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nativeSrc": "6964:4:84",
                "nodeType": "YulTypedName",
                "src": "6964:4:84",
                "type": ""
              },
              {
                "name": "exponent",
                "nativeSrc": "6970:8:84",
                "nodeType": "YulTypedName",
                "src": "6970:8:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nativeSrc": "6983:5:84",
                "nodeType": "YulTypedName",
                "src": "6983:5:84",
                "type": ""
              }
            ],
            "src": "6923:131:84"
          }
        ]
      },
      "contents": "{\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_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_library_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_bytes32t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\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_uint8__to_t_uint8__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b83fd1362122226ebd334873b785b11c1b5cc459c0082afa04d9deda2e13ed4a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"WitnetPriceFeedsLib: uncompliant\")\n        mstore(add(headStart, 96), \" solver implementation\")\n        tail := add(headStart, 128)\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes6(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        let _2 := shl(208, 0xffffffffffff)\n        value := and(_1, _2)\n        if lt(len, 6)\n        {\n            value := and(and(_1, shl(shl(3, sub(6, len)), _2)), _2)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_22d156239ab413033e2201bd93f1958cb1588ec5e33309c023c8b8027297d8e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"WitnetPriceFeedsLib: bad caption\")\n        mstore(add(headStart, 96), \" prefix\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_a9594db15eb27b6c72c111e17e3bb392ab962a926b4d3310ac0309d91ddf668f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetPriceFeedsLib: bad decimal\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr_t_bytes_calldata_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        calldatacopy(_1, value2, value3)\n        let _2 := add(_1, value3)\n        mstore(_2, 0)\n        end := _2\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := 1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n}",
      "id": 84,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "482:2691:69:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;482:2691:69;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "482:2691:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:1001;;;;;;;;;;-1:-1:-1;587:1001:69;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1260:32:84;;;1242:51;;1230:2;1215:18;587:1001:69;;;;;;;;2126:780;;;;;;:::i;:::-;;:::i;:::-;;;1967:4:84;1955:17;;;1937:36;;1925:2;1910:18;2126:780:69;1787:192:84;1596:522:69;;;;;;:::i;:::-;;:::i;587:1001::-;746:15;789:56;817:8;;827:17;;789:27;:56::i;:::-;779:66;;860:7;-1:-1:-1;;;;;860:19:69;;883:1;860:24;856:725;;901:22;926:46;944:8;;954:17;;926;:46::i;:::-;901:71;;987:24;1212:1;1178:9;1172:16;1144:4;1133:9;1129:20;1104:1;1074:158;1054:178;;1347:16;1337:26;;-1:-1:-1;;;;;;;;1404:75:69;;1423:7;-1:-1:-1;;;;;1404:33:69;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1404:75:69;;1378:191;;;;-1:-1:-1;;;1378:191:69;;2481:2:84;1378:191:69;;;2463:21:84;2520:2;2500:18;;;2493:30;2559:34;2539:18;;;2532:62;-1:-1:-1;;;2610:18:84;;;2603:52;2672:19;;1378:191:69;;;;;;;;;886:695;;856:725;587:1001;;;;;;:::o;2126:780::-;2233:5;-1:-1:-1;;;;;;2278:40:69;;:22;2291:7;;2278:22;:::i;:::-;-1:-1:-1;;;;;;2278:40:69;;2256:129;;;;-1:-1:-1;;;2256:129:69;;3236:2:84;2256:129:69;;;3218:21:84;3275:2;3255:18;;;3248:30;3314:34;3294:18;;;3287:62;-1:-1:-1;;;3365:18:84;;;3358:37;3412:19;;2256:129:69;3034:403:84;2256:129:69;2396:28;2427:17;:7;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2427:15:69;;-1:-1:-1;;;2427:17:69:i;:::-;2484:11;;;;;;;;;;;-1:-1:-1;;;2484:11:69;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;3227:30:63;;;;;;;;3233:18;;3227:30;;;;;2396:48:69;;-1:-1:-1;3227:30:63;2554:22:69;2396:48;3227:30:63;2554:14:69;:22::i;:::-;:26;;2579:1;2554:26;:::i;:::-;2541:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2516:65;;2597:8;2592:122;2617:6;:13;2611:3;:19;2592:122;;;2669:33;:22;:8;2684:6;2669:14;:22::i;:::-;:31;:33::i;:::-;2655:6;2662:3;2655:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;2632:6;;2592:122;;;;2725:14;2741:13;2758:41;2773:6;2796:1;2780:6;:13;:17;;;;:::i;:::-;2773:25;;;;;;;;:::i;:::-;;;;;;;2758:14;:41::i;:::-;2724:75;;;;2818:8;2810:54;;;;-1:-1:-1;;;2810:54:69;;4303:2:84;2810:54:69;;;4285:21:84;4342:2;4322:18;;;4315:30;4381:34;4361:18;;;4354:62;-1:-1:-1;;;4432:18:84;;;4425:31;4473:19;;2810:54:69;4101:397:84;2810:54:69;-1:-1:-1;2888:9:69;2126:780;-1:-1:-1;;;;;;;2126:780:69:o;1596:522::-;1768:7;-1:-1:-1;;;;;;1945:4:69;1768:7;2016:46;2034:8;;2044:17;;2016;:46::i;:::-;2006:57;;;;;;;1863:219;;;;;;;;-1:-1:-1;;;;;;4726:26:84;;;;4714:39;;4790:2;4786:15;;;;-1:-1:-1;;4782:53:84;4778:1;4769:11;;4762:74;4861:2;4852:12;;4845:28;4898:2;4889:12;;4882:28;4935:2;4926:12;;4503:441;1863:219:69;;;;-1:-1:-1;;1863:219:69;;;;;;;;;1835:262;;1863:219;1835:262;;;;;1596:522;-1:-1:-1;;;;;1596:522:69:o;2914:253::-;3040:12;3108:8;;3131:17;;3077:82;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3070:89;;2914:253;;;;;;:::o;3049:216:63:-;-1:-1:-1;;;;;;;;;;;;;;;;;3227:30:63;;;;;;;;3233:18;;3227:30;;3184:15;;;3227:30;;;;;;;;3049:216::o;23948:370::-;24026:8;24047;24116:6;:11;;;24058:55;24066:4;:9;;;24077:4;:9;;;24088:6;:11;;;24101:6;:11;;;24058:7;:55::i;:::-;:69;;;;:::i;:::-;24047:80;;24138:173;24164:9;;24152;;;;:21;;24164:9;24152:21;:::i;:::-;24145:3;:28;24138:173;;24190:5;;;;:::i;:::-;;;;24288:6;:11;;;24216:69;24243:4;:9;;;24237:3;:15;;;;:::i;:::-;24224:9;;:29;;;;:::i;:::-;24255:3;24260:6;:11;;;24273:6;:11;;;24216:7;:69::i;:::-;:83;;;;:::i;:::-;24210:89;;24138:173;;;24036:282;23948:370;;;;:::o;21916:143::-;-1:-1:-1;;;;;;;;;;;;;;;;;22025:26:63;22031:4;22037:6;22045:5;22025;:26::i;5502:273::-;5562:13;5588:17;5619:4;:9;;;5608:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5608:21:63;;5588:41;;5640:11;5692:2;5687:3;5683:12;5673:22;;5709:37;5717:6;5725:4;:9;;;5736:4;:9;;;5709:7;:37::i;24654:553:64:-;24731:8;24741:4;24793:9;24788:368;24818:3;24812:17;24808:1;:21;24788:368;;;24911:1;24905:2;24894:3;24899:1;24888:13;;;;;;;;:::i;:::-;;;;;;;24882:25;:20;24881:31;;;:91;;;24971:1;24965:2;24954:3;24959:1;24948:13;;;;;;;;:::i;:::-;;;;;;;24942:25;:20;24941:31;;24881:91;24855:197;;;-1:-1:-1;25023:1:64;;;;-1:-1:-1;24654:553:64;-1:-1:-1;;24654:553:64:o;24855:197::-;25138:1;25134;25120:3;25114:17;:21;:25;25107:2;:33;25101:2;25090:3;25095:1;25084:13;;;;;;;;:::i;:::-;;;;;;;25078:25;:20;25077:63;;25070:70;;;;;24831:3;;24788:368;;;-1:-1:-1;25178:3:64;;25183:4;;-1:-1:-1;24654:553:64;-1:-1:-1;24654:553:64:o;16038:1493:63:-;16137:4;16165:7;16137:4;16208:20;;;16204:1285;;16262:2;16249:9;:15;16245:1233;;16285:12;16320:13;;16316:112;;16405:1;16386:14;16391:9;16386:2;:14;:::i;:::-;16381:20;;:1;:20;:::i;:::-;16375:27;;:1;:27;:::i;:::-;:31;;;;:::i;:::-;16373:34;;-1:-1:-1;16316:112:63;16514:16;;16510:27;;16448:18;16590:9;16570:17;16580:7;16570;:17;:::i;:::-;:29;;;;:::i;:::-;16678:10;;16559:40;;-1:-1:-1;16674:21:63;;16717:233;16735:10;16724:7;:21;16717:233;;16781:3;16774;:10;16770:65;;16818:17;16828:7;16818;:17;:::i;:::-;16811:24;;;;;;;;;;16770:65;16858:5;;;;:::i;:::-;;;;16924:4;16918:3;16912:10;16908:21;16897:32;;16717:233;;;16975:3;16968:10;;;;;;;;;;16245:1233;-1:-1:-1;17119:31:63;;;17069:12;;17172:291;17193:19;17203:9;17193:7;:19;:::i;:::-;17186:3;:26;17172:291;;17306:25;;;17359:16;;;17355:57;;17409:3;17402:10;;;;;;;;17355:57;17435:8;17442:1;17435:8;;:::i;:::-;;;17221:242;17214:5;;;;;:::i;:::-;;;;17172:291;;;17000:478;16245:1233;17506:17;17516:7;17506;:17;:::i;:::-;17499:24;16038:1493;-1:-1:-1;;;;;;;16038:1493:63:o;20918:516::-;-1:-1:-1;;;;;;;;;;;;;;;;;21041:8:63;21052:55;21060:4;:9;;;21071:4;:9;;;21082:6;:11;;;21095:6;:11;;;21052:7;:55::i;:::-;21131:9;;;;;;21118:10;;;:22;;;;21170:9;21041:66;;-1:-1:-1;21164:15:63;;21041:66;21164:15;:::i;:::-;21151:28;;21213:9;;21201;;;;:21;;21213:9;21201:21;:::i;:::-;21194:3;:28;21190:214;;21277:1;21265:13;;21190:214;;;21337:11;;21324:10;;:24;;21337:11;21324:24;:::i;:::-;21311:37;;:4;;:37;;;;;:::i;:::-;;;-1:-1:-1;21381:11:63;;21375:17;;:3;:17;:::i;:::-;21363:9;;;:29;21190:214;-1:-1:-1;21421:5:63;;20918:516;-1:-1:-1;;;20918:516:63:o;2187:655::-;2327:2;2319:4;:10;2313:176;;2400:11;;2386:26;;2441:11;2450:2;2393:5;2441:11;:::i;:::-;;-1:-1:-1;2467:10:63;2475:2;2467:10;;:::i;:::-;;-1:-1:-1;2331:10:63;2339:2;2331:10;;:::i;:::-;;;2313:176;;;-1:-1:-1;;2576:8:63;;2572:71;;2630:1;2617:9;2622:4;2617:2;:9;:::i;:::-;2609:18;;:3;:18;:::i;:::-;:22;;;;:::i;:::-;2601:30;;2572:71;2696:11;;2754:12;;2750:24;;2709:10;;2692:28;2802:21;;;;2788:36;;;-1:-1:-1;2187:655:63:o;14:347:84:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:84;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:84;-1:-1:-1;879:2:84;864:18;;851:32;;-1:-1:-1;895:16:84;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:84;-1:-1:-1;;;;366:717:84:o;1304:478::-;1384:6;1392;1400;1453:2;1441:9;1432:7;1428:23;1424:32;1421:52;;;1469:1;1466;1459:12;1421:52;1505:9;1492:23;1482:33;;1566:2;1555:9;1551:18;1538:32;1593:18;1585:6;1582:30;1579:50;;;1625:1;1622;1615:12;1579:50;1664:58;1714:7;1705:6;1694:9;1690:22;1664:58;:::i;:::-;1304:478;;1741:8;;-1:-1:-1;1638:84:84;;-1:-1:-1;;;;1304:478:84:o;1984:290::-;2053:6;2106:2;2094:9;2085:7;2081:23;2077:32;2074:52;;;2122:1;2119;2112:12;2074:52;2148:16;;-1:-1:-1;;;;;;2193:32:84;;2183:43;;2173:71;;2240:1;2237;2230:12;2173:71;2263:5;1984:290;-1:-1:-1;;;1984:290:84:o;2702:327::-;-1:-1:-1;;;;;;2822:19:84;;2902:11;;;;2933:1;2925:10;;2922:101;;;3010:2;3004;2997:3;2994:1;2990:11;2987:1;2983:19;2979:28;2975:2;2971:37;2967:46;2958:55;;2922:101;;;2702:327;;;;:::o;3442:127::-;3503:10;3498:3;3494:20;3491:1;3484:31;3534:4;3531:1;3524:15;3558:4;3555:1;3548:15;3574:125;3639:9;;;3660:10;;;3657:36;;;3673:18;;:::i;:::-;3574:125;;;;:::o;3704:127::-;3765:10;3760:3;3756:20;3753:1;3746:31;3796:4;3793:1;3786:15;3820:4;3817:1;3810:15;3836:127;3897:10;3892:3;3888:20;3885:1;3878:31;3928:4;3925:1;3918:15;3952:4;3949:1;3942:15;3968:128;4035:9;;;4056:11;;;4053:37;;;4070:18;;:::i;4949:424::-;5188:6;5180;5175:3;5162:33;5144:3;5223:6;5218:3;5214:16;5250:1;5246:2;5239:13;5286:6;5278;5274:2;5261:32;5347:1;5312:15;;5336:13;;;-1:-1:-1;5312:15:84;;4949:424;-1:-1:-1;;;;4949:424:84:o;5378:135::-;5417:3;5438:17;;;5435:43;;5458:18;;:::i;:::-;-1:-1:-1;5505:1:84;5494:13;;5378:135::o;5518:168::-;5591:9;;;5622;;5639:15;;;5633:22;;5619:37;5609:71;;5660:18;;:::i;5691:416::-;5780:1;5817:5;5780:1;5831:270;5852:7;5842:8;5839:21;5831:270;;;5911:4;5907:1;5903:6;5899:17;5893:4;5890:27;5887:53;;;5920:18;;:::i;:::-;5970:7;5960:8;5956:22;5953:55;;;5990:16;;;;5953:55;6069:22;;;;6029:15;;;;5831:270;;;5835:3;5691:416;;;;;:::o;6112:806::-;6161:5;6191:8;6181:80;;-1:-1:-1;6232:1:84;6246:5;;6181:80;6280:4;6270:76;;-1:-1:-1;6317:1:84;6331:5;;6270:76;6362:4;6380:1;6375:59;;;;6448:1;6443:130;;;;6355:218;;6375:59;6405:1;6396:10;;6419:5;;;6443:130;6480:3;6470:8;6467:17;6464:43;;;6487:18;;:::i;:::-;-1:-1:-1;;6543:1:84;6529:16;;6558:5;;6355:218;;6657:2;6647:8;6644:16;6638:3;6632:4;6629:13;6625:36;6619:2;6609:8;6606:16;6601:2;6595:4;6592:12;6588:35;6585:77;6582:159;;;-1:-1:-1;6694:19:84;;;6726:5;;6582:159;6773:34;6798:8;6792:4;6773:34;:::i;:::-;6843:6;6839:1;6835:6;6831:19;6822:7;6819:32;6816:58;;;6854:18;;:::i;:::-;6892:20;;6112:806;-1:-1:-1;;;6112:806:84:o;6923:131::-;6983:5;7012:36;7039:8;7033:4;7012:36;:::i",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.7.0 <0.9.0;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"../interfaces/IWitnetPriceSolver.sol\";\r\nimport \"../interfaces/IWitnetPriceSolverDeployer.sol\";\r\n\r\nimport \"../libs/Slices.sol\";\r\n\r\n/// @title Ancillary deployable library for WitnetPriceFeeds.\r\n/// @dev Features:\r\n/// @dev - deployment of counter-factual IWitnetPriceSolver instances.\r\n/// @dev - validation of feed caption strings.\r\n/// @author The Witnet Foundation.\r\nlibrary WitnetPriceFeedsLib {\r\n\r\n    using Slices for string;\r\n    using Slices for Slices.Slice;\r\n\r\n    function deployPriceSolver(\r\n            bytes calldata initcode,\r\n            bytes calldata constructorParams\r\n        )\r\n        external\r\n        returns (address _solver)\r\n    {\r\n        _solver = determinePriceSolverAddress(initcode, constructorParams);\r\n        if (_solver.code.length == 0) {\r\n            bytes memory _bytecode = _completeInitCode(initcode, constructorParams);\r\n            address _createdContract;\r\n            assembly {\r\n                _createdContract := create2(\r\n                    0, \r\n                    add(_bytecode, 0x20),\r\n                    mload(_bytecode), \r\n                    0\r\n                )\r\n            }\r\n            // assert(_solver == _createdContract); // fails on TEN chains\r\n            _solver = _createdContract;\r\n            require(\r\n                IWitnetPriceSolver(_solver).specs() == type(IWitnetPriceSolver).interfaceId,\r\n                \"WitnetPriceFeedsLib: uncompliant solver implementation\"\r\n            );\r\n        }\r\n    }\r\n\r\n    function determinePriceSolverAddress(\r\n            bytes calldata initcode,\r\n            bytes calldata constructorParams\r\n        )\r\n        public view\r\n        returns (address)\r\n    {\r\n        return address(\r\n            uint160(uint(keccak256(\r\n                abi.encodePacked(\r\n                    bytes1(0xff),\r\n                    address(this),\r\n                    bytes32(0),\r\n                    keccak256(_completeInitCode(initcode, constructorParams))\r\n                )\r\n            )))\r\n        );\r\n    }\r\n\r\n    function validateCaption(bytes32 prefix, string calldata caption)\r\n        external pure\r\n        returns (uint8)\r\n    {\r\n        require(\r\n            bytes6(bytes(caption)) == bytes6(prefix),\r\n            \"WitnetPriceFeedsLib: bad caption prefix\"\r\n        );\r\n        Slices.Slice memory _caption = caption.toSlice();\r\n        Slices.Slice memory _delim = string(\"-\").toSlice();\r\n        string[] memory _parts = new string[](_caption.count(_delim) + 1);\r\n        for (uint _ix = 0; _ix < _parts.length; _ix ++) {\r\n            _parts[_ix] = _caption.split(_delim).toString();\r\n        }\r\n        (uint _decimals, bool _success) = Witnet.tryUint(_parts[_parts.length - 1]);\r\n        require(_success, \"WitnetPriceFeedsLib: bad decimals\");\r\n        return uint8(_decimals);\r\n    }\r\n\r\n    function _completeInitCode(bytes calldata initcode, bytes calldata constructorParams)\r\n        private pure\r\n        returns (bytes memory)\r\n    {\r\n        return abi.encodePacked(\r\n            initcode,\r\n            constructorParams\r\n        );\r\n    } \r\n\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\witnet\\witnet-solidity-bridge\\contracts\\libs\\WitnetPriceFeedsLib.sol",
  "ast": {
    "absolutePath": "project:/contracts/libs/WitnetPriceFeedsLib.sol",
    "exportedSymbols": {
      "IWitnetPriceSolver": [
        13485
      ],
      "IWitnetPriceSolverDeployer": [
        13514
      ],
      "Slices": [
        15980
      ],
      "Witnet": [
        17557
      ],
      "WitnetBuffer": [
        19191
      ],
      "WitnetCBOR": [
        20734
      ],
      "WitnetPriceFeedsLib": [
        23444
      ],
      "WitnetV2": [
        23640
      ]
    },
    "id": 23445,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23208,
        "literals": [
          "solidity",
          ">=",
          "0.7",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:69"
      },
      {
        "id": 23209,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "68:33:69"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitnetPriceSolver.sol",
        "file": "../interfaces/IWitnetPriceSolver.sol",
        "id": 23210,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23445,
        "sourceUnit": 13486,
        "src": "105:46:69",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitnetPriceSolverDeployer.sol",
        "file": "../interfaces/IWitnetPriceSolverDeployer.sol",
        "id": 23211,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23445,
        "sourceUnit": 13515,
        "src": "153:54:69",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/libs/Slices.sol",
        "file": "../libs/Slices.sol",
        "id": 23212,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23445,
        "sourceUnit": 15981,
        "src": "211:28:69",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitnetPriceFeedsLib",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 23213,
          "nodeType": "StructuredDocumentation",
          "src": "243:239:69",
          "text": "@title Ancillary deployable library for WitnetPriceFeeds.\n @dev Features:\n @dev - deployment of counter-factual IWitnetPriceSolver instances.\n @dev - validation of feed caption strings.\n @author The Witnet Foundation."
        },
        "fullyImplemented": true,
        "id": 23444,
        "linearizedBaseContracts": [
          23444
        ],
        "name": "WitnetPriceFeedsLib",
        "nameLocation": "490:19:69",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 23216,
            "libraryName": {
              "id": 23214,
              "name": "Slices",
              "nameLocations": [
                "525:6:69"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 15980,
              "src": "525:6:69"
            },
            "nodeType": "UsingForDirective",
            "src": "519:24:69",
            "typeName": {
              "id": 23215,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "536:6:69",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "global": false,
            "id": 23220,
            "libraryName": {
              "id": 23217,
              "name": "Slices",
              "nameLocations": [
                "555:6:69"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 15980,
              "src": "555:6:69"
            },
            "nodeType": "UsingForDirective",
            "src": "549:30:69",
            "typeName": {
              "id": 23219,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 23218,
                "name": "Slices.Slice",
                "nameLocations": [
                  "566:6:69",
                  "573:5:69"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 14156,
                "src": "566:12:69"
              },
              "referencedDeclaration": 14156,
              "src": "566:12:69",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Slice_$14156_storage_ptr",
                "typeString": "struct Slices.Slice"
              }
            }
          },
          {
            "body": {
              "id": 23272,
              "nodeType": "Block",
              "src": "768:820:69",
              "statements": [
                {
                  "expression": {
                    "id": 23234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23229,
                      "name": "_solver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23227,
                      "src": "779:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 23231,
                          "name": "initcode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23222,
                          "src": "817:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "id": 23232,
                          "name": "constructorParams",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23224,
                          "src": "827:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        ],
                        "id": 23230,
                        "name": "determinePriceSolverAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23316,
                        "src": "789:27:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_address_$",
                          "typeString": "function (bytes calldata,bytes calldata) view returns (address)"
                        }
                      },
                      "id": 23233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "789:56:69",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "779:66:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 23235,
                  "nodeType": "ExpressionStatement",
                  "src": "779:66:69"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 23236,
                          "name": "_solver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23227,
                          "src": "860:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "868:4:69",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "860:12:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 23238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "873:6:69",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "860:19:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 23239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "883:1:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "860:24:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 23271,
                  "nodeType": "IfStatement",
                  "src": "856:725:69",
                  "trueBody": {
                    "id": 23270,
                    "nodeType": "Block",
                    "src": "886:695:69",
                    "statements": [
                      {
                        "assignments": [
                          23242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23242,
                            "mutability": "mutable",
                            "name": "_bytecode",
                            "nameLocation": "914:9:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 23270,
                            "src": "901:22:69",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 23241,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "901:5:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23247,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 23244,
                              "name": "initcode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23222,
                              "src": "944:8:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "id": 23245,
                              "name": "constructorParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23224,
                              "src": "954:17:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 23243,
                            "name": "_completeInitCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23443,
                            "src": "926:17:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes calldata,bytes calldata) pure returns (bytes memory)"
                            }
                          },
                          "id": 23246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "926:46:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "901:71:69"
                      },
                      {
                        "assignments": [
                          23249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23249,
                            "mutability": "mutable",
                            "name": "_createdContract",
                            "nameLocation": "995:16:69",
                            "nodeType": "VariableDeclaration",
                            "scope": 23270,
                            "src": "987:24:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23248,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "987:7:69",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23250,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "987:24:69"
                      },
                      {
                        "AST": {
                          "nativeSrc": "1035:212:69",
                          "nodeType": "YulBlock",
                          "src": "1035:212:69",
                          "statements": [
                            {
                              "nativeSrc": "1054:178:69",
                              "nodeType": "YulAssignment",
                              "src": "1054:178:69",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1104:1:69",
                                    "nodeType": "YulLiteral",
                                    "src": "1104:1:69",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_bytecode",
                                        "nativeSrc": "1133:9:69",
                                        "nodeType": "YulIdentifier",
                                        "src": "1133:9:69"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1144:4:69",
                                        "nodeType": "YulLiteral",
                                        "src": "1144:4:69",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1129:3:69",
                                      "nodeType": "YulIdentifier",
                                      "src": "1129:3:69"
                                    },
                                    "nativeSrc": "1129:20:69",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1129:20:69"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_bytecode",
                                        "nativeSrc": "1178:9:69",
                                        "nodeType": "YulIdentifier",
                                        "src": "1178:9:69"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1172:5:69",
                                      "nodeType": "YulIdentifier",
                                      "src": "1172:5:69"
                                    },
                                    "nativeSrc": "1172:16:69",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1172:16:69"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1212:1:69",
                                    "nodeType": "YulLiteral",
                                    "src": "1212:1:69",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "create2",
                                  "nativeSrc": "1074:7:69",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:7:69"
                                },
                                "nativeSrc": "1074:158:69",
                                "nodeType": "YulFunctionCall",
                                "src": "1074:158:69"
                              },
                              "variableNames": [
                                {
                                  "name": "_createdContract",
                                  "nativeSrc": "1054:16:69",
                                  "nodeType": "YulIdentifier",
                                  "src": "1054:16:69"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 23242,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1133:9:69",
                            "valueSize": 1
                          },
                          {
                            "declaration": 23242,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1178:9:69",
                            "valueSize": 1
                          },
                          {
                            "declaration": 23249,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1054:16:69",
                            "valueSize": 1
                          }
                        ],
                        "id": 23251,
                        "nodeType": "InlineAssembly",
                        "src": "1026:221:69"
                      },
                      {
                        "expression": {
                          "id": 23254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23252,
                            "name": "_solver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23227,
                            "src": "1337:7:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23253,
                            "name": "_createdContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23249,
                            "src": "1347:16:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1337:26:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23255,
                        "nodeType": "ExpressionStatement",
                        "src": "1337:26:69"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 23266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 23258,
                                        "name": "_solver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23227,
                                        "src": "1423:7:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 23257,
                                      "name": "IWitnetPriceSolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13485,
                                      "src": "1404:18:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWitnetPriceSolver_$13485_$",
                                        "typeString": "type(contract IWitnetPriceSolver)"
                                      }
                                    },
                                    "id": 23259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1404:27:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWitnetPriceSolver_$13485",
                                      "typeString": "contract IWitnetPriceSolver"
                                    }
                                  },
                                  "id": 23260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1432:5:69",
                                  "memberName": "specs",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13476,
                                  "src": "1404:33:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_pure$__$returns$_t_bytes4_$",
                                    "typeString": "function () pure external returns (bytes4)"
                                  }
                                },
                                "id": 23261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1404:35:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 23263,
                                      "name": "IWitnetPriceSolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13485,
                                      "src": "1448:18:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWitnetPriceSolver_$13485_$",
                                        "typeString": "type(contract IWitnetPriceSolver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IWitnetPriceSolver_$13485_$",
                                        "typeString": "type(contract IWitnetPriceSolver)"
                                      }
                                    ],
                                    "id": 23262,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967269,
                                    "src": "1443:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 23264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1443:24:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IWitnetPriceSolver_$13485",
                                    "typeString": "type(contract IWitnetPriceSolver)"
                                  }
                                },
                                "id": 23265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1468:11:69",
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "1443:36:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "1404:75:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5769746e6574507269636546656564734c69623a20756e636f6d706c69616e7420736f6c76657220696d706c656d656e746174696f6e",
                              "id": 23267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1498:56:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b83fd1362122226ebd334873b785b11c1b5cc459c0082afa04d9deda2e13ed4a",
                                "typeString": "literal_string \"WitnetPriceFeedsLib: uncompliant solver implementation\""
                              },
                              "value": "WitnetPriceFeedsLib: uncompliant solver implementation"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b83fd1362122226ebd334873b785b11c1b5cc459c0082afa04d9deda2e13ed4a",
                                "typeString": "literal_string \"WitnetPriceFeedsLib: uncompliant solver implementation\""
                              }
                            ],
                            "id": 23256,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "1378:7:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1378:191:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23269,
                        "nodeType": "ExpressionStatement",
                        "src": "1378:191:69"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "a55b471c",
            "id": 23273,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deployPriceSolver",
            "nameLocation": "596:17:69",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23222,
                  "mutability": "mutable",
                  "name": "initcode",
                  "nameLocation": "643:8:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23273,
                  "src": "628:23:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23221,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "628:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23224,
                  "mutability": "mutable",
                  "name": "constructorParams",
                  "nameLocation": "681:17:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23273,
                  "src": "666:32:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23223,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "666:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "613:96:69"
            },
            "returnParameters": {
              "id": 23228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23227,
                  "mutability": "mutable",
                  "name": "_solver",
                  "nameLocation": "754:7:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23273,
                  "src": "746:15:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23226,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "746:7:69",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "745:17:69"
            },
            "scope": 23444,
            "src": "587:1001:69",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 23315,
              "nodeType": "Block",
              "src": "1782:336:69",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30786666",
                                            "id": 23293,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1909:4:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            },
                                            "value": "0xff"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            }
                                          ],
                                          "id": 23292,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1902:6:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 23291,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1902:6:69",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23294,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1902:12:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 23297,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "1945:4:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_WitnetPriceFeedsLib_$23444",
                                              "typeString": "library WitnetPriceFeedsLib"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_WitnetPriceFeedsLib_$23444",
                                              "typeString": "library WitnetPriceFeedsLib"
                                            }
                                          ],
                                          "id": 23296,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1937:7:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 23295,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1937:7:69",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23298,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1937:13:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 23301,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1981:1:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "id": 23300,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1973:7:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 23299,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1973:7:69",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23302,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1973:10:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 23305,
                                                "name": "initcode",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 23275,
                                                "src": "2034:8:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              },
                                              {
                                                "id": 23306,
                                                "name": "constructorParams",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 23277,
                                                "src": "2044:17:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              ],
                                              "id": 23304,
                                              "name": "_completeInitCode",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23443,
                                              "src": "2016:17:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function (bytes calldata,bytes calldata) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 23307,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2016:46:69",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 23303,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967288,
                                          "src": "2006:9:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 23308,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2006:57:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "expression": {
                                        "id": 23289,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "1863:3:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 23290,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "1867:12:69",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "1863:16:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 23309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1863:219:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 23288,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967288,
                                  "src": "1835:9:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 23310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1835:262:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 23287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1830:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 23286,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1830:4:69",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 23311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1830:268:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 23285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1822:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 23284,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "1822:7:69",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 23312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1822:277:69",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 23283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1800:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 23282,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1800:7:69",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 23313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1800:310:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 23281,
                  "id": 23314,
                  "nodeType": "Return",
                  "src": "1793:317:69"
                }
              ]
            },
            "functionSelector": "ff75890f",
            "id": 23316,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determinePriceSolverAddress",
            "nameLocation": "1605:27:69",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23275,
                  "mutability": "mutable",
                  "name": "initcode",
                  "nameLocation": "1662:8:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "1647:23:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23274,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23277,
                  "mutability": "mutable",
                  "name": "constructorParams",
                  "nameLocation": "1700:17:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "1685:32:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23276,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1685:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1632:96:69"
            },
            "returnParameters": {
              "id": 23281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23280,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "1768:7:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1768:7:69",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1767:9:69"
            },
            "scope": 23444,
            "src": "1596:522:69",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23426,
              "nodeType": "Block",
              "src": "2245:661:69",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes6",
                          "typeString": "bytes6"
                        },
                        "id": 23337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 23330,
                                  "name": "caption",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23320,
                                  "src": "2291:7:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 23329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2285:5:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 23328,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2285:5:69",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2285:14:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 23327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2278:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes6_$",
                              "typeString": "type(bytes6)"
                            },
                            "typeName": {
                              "id": 23326,
                              "name": "bytes6",
                              "nodeType": "ElementaryTypeName",
                              "src": "2278:6:69",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2278:22:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes6",
                            "typeString": "bytes6"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 23335,
                              "name": "prefix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23318,
                              "src": "2311:6:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 23334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2304:6:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes6_$",
                              "typeString": "type(bytes6)"
                            },
                            "typeName": {
                              "id": 23333,
                              "name": "bytes6",
                              "nodeType": "ElementaryTypeName",
                              "src": "2304:6:69",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2304:14:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes6",
                            "typeString": "bytes6"
                          }
                        },
                        "src": "2278:40:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5769746e6574507269636546656564734c69623a206261642063617074696f6e20707265666978",
                        "id": 23338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2333:41:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_22d156239ab413033e2201bd93f1958cb1588ec5e33309c023c8b8027297d8e9",
                          "typeString": "literal_string \"WitnetPriceFeedsLib: bad caption prefix\""
                        },
                        "value": "WitnetPriceFeedsLib: bad caption prefix"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_22d156239ab413033e2201bd93f1958cb1588ec5e33309c023c8b8027297d8e9",
                          "typeString": "literal_string \"WitnetPriceFeedsLib: bad caption prefix\""
                        }
                      ],
                      "id": 23325,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2256:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2256:129:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23340,
                  "nodeType": "ExpressionStatement",
                  "src": "2256:129:69"
                },
                {
                  "assignments": [
                    23345
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23345,
                      "mutability": "mutable",
                      "name": "_caption",
                      "nameLocation": "2416:8:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 23426,
                      "src": "2396:28:69",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                        "typeString": "struct Slices.Slice"
                      },
                      "typeName": {
                        "id": 23344,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23343,
                          "name": "Slices.Slice",
                          "nameLocations": [
                            "2396:6:69",
                            "2403:5:69"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 14156,
                          "src": "2396:12:69"
                        },
                        "referencedDeclaration": 14156,
                        "src": "2396:12:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$14156_storage_ptr",
                          "typeString": "struct Slices.Slice"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23349,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 23346,
                        "name": "caption",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23320,
                        "src": "2427:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "id": 23347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2435:7:69",
                      "memberName": "toSlice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14231,
                      "src": "2427:15:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_Slice_$14156_memory_ptr_$attached_to$_t_string_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (struct Slices.Slice memory)"
                      }
                    },
                    "id": 23348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2427:17:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2396:48:69"
                },
                {
                  "assignments": [
                    23354
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23354,
                      "mutability": "mutable",
                      "name": "_delim",
                      "nameLocation": "2475:6:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 23426,
                      "src": "2455:26:69",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                        "typeString": "struct Slices.Slice"
                      },
                      "typeName": {
                        "id": 23353,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 23352,
                          "name": "Slices.Slice",
                          "nameLocations": [
                            "2455:6:69",
                            "2462:5:69"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 14156,
                          "src": "2455:12:69"
                        },
                        "referencedDeclaration": 14156,
                        "src": "2455:12:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$14156_storage_ptr",
                          "typeString": "struct Slices.Slice"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23361,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "hexValue": "2d",
                            "id": 23357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2491:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                              "typeString": "literal_string \"-\""
                            },
                            "value": "-"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                              "typeString": "literal_string \"-\""
                            }
                          ],
                          "id": 23356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2484:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 23355,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "2484:6:69",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 23358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2484:11:69",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "id": 23359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2496:7:69",
                      "memberName": "toSlice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14231,
                      "src": "2484:19:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_Slice_$14156_memory_ptr_$attached_to$_t_string_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (struct Slices.Slice memory)"
                      }
                    },
                    "id": 23360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2484:21:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2455:50:69"
                },
                {
                  "assignments": [
                    23366
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23366,
                      "mutability": "mutable",
                      "name": "_parts",
                      "nameLocation": "2532:6:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 23426,
                      "src": "2516:22:69",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                        "typeString": "string[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 23364,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2516:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 23365,
                        "nodeType": "ArrayTypeName",
                        "src": "2516:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23377,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 23372,
                              "name": "_delim",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23354,
                              "src": "2569:6:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            ],
                            "expression": {
                              "id": 23370,
                              "name": "_caption",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23345,
                              "src": "2554:8:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 23371,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2563:5:69",
                            "memberName": "count",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15789,
                            "src": "2554:14:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$14156_memory_ptr_$_t_struct$_Slice_$14156_memory_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Slice_$14156_memory_ptr_$",
                              "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory) pure returns (uint256)"
                            }
                          },
                          "id": 23373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:22:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 23374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2579:1:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "2554:26:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2541:12:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (string memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 23367,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2545:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 23368,
                        "nodeType": "ArrayTypeName",
                        "src": "2545:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      }
                    },
                    "id": 23376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2541:40:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2516:65:69"
                },
                {
                  "body": {
                    "id": 23400,
                    "nodeType": "Block",
                    "src": "2640:74:69",
                    "statements": [
                      {
                        "expression": {
                          "id": 23398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 23389,
                              "name": "_parts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23366,
                              "src": "2655:6:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 23391,
                            "indexExpression": {
                              "id": 23390,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23379,
                              "src": "2662:3:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2655:11:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 23394,
                                    "name": "_delim",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23354,
                                    "src": "2684:6:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 23392,
                                    "name": "_caption",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23345,
                                    "src": "2669:8:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  },
                                  "id": 23393,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2678:5:69",
                                  "memberName": "split",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15636,
                                  "src": "2669:14:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$14156_memory_ptr_$_t_struct$_Slice_$14156_memory_ptr_$returns$_t_struct$_Slice_$14156_memory_ptr_$attached_to$_t_struct$_Slice_$14156_memory_ptr_$",
                                    "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory) pure returns (struct Slices.Slice memory)"
                                  }
                                },
                                "id": 23395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2669:22:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$14156_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 23396,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2692:8:69",
                              "memberName": "toString",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14456,
                              "src": "2669:31:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$14156_memory_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_struct$_Slice_$14156_memory_ptr_$",
                                "typeString": "function (struct Slices.Slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 23397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2669:33:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2655:47:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 23399,
                        "nodeType": "ExpressionStatement",
                        "src": "2655:47:69"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 23382,
                      "name": "_ix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23379,
                      "src": "2611:3:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 23383,
                        "name": "_parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23366,
                        "src": "2617:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      "id": 23384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2624:6:69",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2617:13:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2611:19:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 23401,
                  "initializationExpression": {
                    "assignments": [
                      23379
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 23379,
                        "mutability": "mutable",
                        "name": "_ix",
                        "nameLocation": "2602:3:69",
                        "nodeType": "VariableDeclaration",
                        "scope": 23401,
                        "src": "2597:8:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23378,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2597:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 23381,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 23380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2608:1:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2597:12:69"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 23387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2632:6:69",
                      "subExpression": {
                        "id": 23386,
                        "name": "_ix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23379,
                        "src": "2632:3:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 23388,
                    "nodeType": "ExpressionStatement",
                    "src": "2632:6:69"
                  },
                  "nodeType": "ForStatement",
                  "src": "2592:122:69"
                },
                {
                  "assignments": [
                    23403,
                    23405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23403,
                      "mutability": "mutable",
                      "name": "_decimals",
                      "nameLocation": "2730:9:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 23426,
                      "src": "2725:14:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 23402,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2725:4:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 23405,
                      "mutability": "mutable",
                      "name": "_success",
                      "nameLocation": "2746:8:69",
                      "nodeType": "VariableDeclaration",
                      "scope": 23426,
                      "src": "2741:13:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 23404,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2741:4:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23415,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 23408,
                          "name": "_parts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23366,
                          "src": "2773:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                            "typeString": "string memory[] memory"
                          }
                        },
                        "id": 23413,
                        "indexExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 23409,
                              "name": "_parts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23366,
                              "src": "2780:6:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 23410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2787:6:69",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2780:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 23411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2796:1:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2780:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2773:25:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 23406,
                        "name": "Witnet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17557,
                        "src": "2758:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Witnet_$17557_$",
                          "typeString": "type(library Witnet)"
                        }
                      },
                      "id": 23407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2765:7:69",
                      "memberName": "tryUint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17200,
                      "src": "2758:14:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$_t_bool_$",
                        "typeString": "function (string memory) pure returns (uint256,bool)"
                      }
                    },
                    "id": 23414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2758:41:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(uint256,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2724:75:69"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23417,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23405,
                        "src": "2818:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5769746e6574507269636546656564734c69623a2062616420646563696d616c73",
                        "id": 23418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2828:35:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a9594db15eb27b6c72c111e17e3bb392ab962a926b4d3310ac0309d91ddf668f",
                          "typeString": "literal_string \"WitnetPriceFeedsLib: bad decimals\""
                        },
                        "value": "WitnetPriceFeedsLib: bad decimals"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a9594db15eb27b6c72c111e17e3bb392ab962a926b4d3310ac0309d91ddf668f",
                          "typeString": "literal_string \"WitnetPriceFeedsLib: bad decimals\""
                        }
                      ],
                      "id": 23416,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2810:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2810:54:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23420,
                  "nodeType": "ExpressionStatement",
                  "src": "2810:54:69"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23423,
                        "name": "_decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23403,
                        "src": "2888:9:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23422,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2882:5:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 23421,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2882:5:69",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 23424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2882:16:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 23324,
                  "id": 23425,
                  "nodeType": "Return",
                  "src": "2875:23:69"
                }
              ]
            },
            "functionSelector": "e78d44d9",
            "id": 23427,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validateCaption",
            "nameLocation": "2135:15:69",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23318,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "2159:6:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23427,
                  "src": "2151:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23317,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2151:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23320,
                  "mutability": "mutable",
                  "name": "caption",
                  "nameLocation": "2183:7:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23427,
                  "src": "2167:23:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23319,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2167:6:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2150:41:69"
            },
            "returnParameters": {
              "id": 23324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23323,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23427,
                  "src": "2233:5:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 23322,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2233:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2232:7:69"
            },
            "scope": 23444,
            "src": "2126:780:69",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 23442,
              "nodeType": "Block",
              "src": "3059:108:69",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23438,
                        "name": "initcode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23429,
                        "src": "3108:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "id": 23439,
                        "name": "constructorParams",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23431,
                        "src": "3131:17:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 23436,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "3077:3:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 23437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "3081:12:69",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "3077:16:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 23440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3077:82:69",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 23435,
                  "id": 23441,
                  "nodeType": "Return",
                  "src": "3070:89:69"
                }
              ]
            },
            "id": 23443,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_completeInitCode",
            "nameLocation": "2923:17:69",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23429,
                  "mutability": "mutable",
                  "name": "initcode",
                  "nameLocation": "2956:8:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23443,
                  "src": "2941:23:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23428,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2941:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23431,
                  "mutability": "mutable",
                  "name": "constructorParams",
                  "nameLocation": "2981:17:69",
                  "nodeType": "VariableDeclaration",
                  "scope": 23443,
                  "src": "2966:32:69",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23430,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2966:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2940:59:69"
            },
            "returnParameters": {
              "id": 23435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23434,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23443,
                  "src": "3040:12:69",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23433,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3040:5:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3039:14:69"
            },
            "scope": 23444,
            "src": "2914:253:69",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 23445,
        "src": "482:2691:69",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:3140:69"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.25+commit.b61c2a91.Emscripten.clang"
  },
  "networks": {
    "322": {
      "events": {},
      "links": {},
      "address": "0x579b4aD5E67E5B491a33A033A02A70769D7AF837"
    },
    "11155111": {
      "events": {},
      "links": {},
      "address": "0x579b4aD5E67E5B491a33A033A02A70769D7AF837"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-12-05T09:36:04.610Z",
  "devdoc": {
    "author": "The Witnet Foundation.",
    "details": "Features:- deployment of counter-factual IWitnetPriceSolver instances.- validation of feed caption strings.",
    "kind": "dev",
    "methods": {},
    "title": "Ancillary deployable library for WitnetPriceFeeds.",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}