UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

956 lines (955 loc) 428 kB
{ "contractName": "WitnetProxy", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newImplementation", "type": "address" }, { "internalType": "bytes", "name": "_initData", "type": "bytes" } ], "name": "upgradeTo", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@otherplane.com>\",\"kind\":\"dev\",\"methods\":{\"upgradeTo(address,bytes)\":{\"params\":{\"_initData\":\"Raw data with which new implementation will be initialized.\",\"_newImplementation\":\"New implementation address.\"},\"returns\":{\"_0\":\"Returns whether new implementation would be further upgradable, or not.\"}}},\"title\":\"WitnetProxy: upgradable delegate-proxy contract. \",\"version\":1},\"userdoc\":{\"events\":{\"Upgraded(address)\":{\"notice\":\"Event emitted every time the implementation gets updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor with no params as to ease eventual support of Singleton pattern (i.e. ERC-2470).\"},\"implementation()\":{\"notice\":\"Returns proxy's current implementation address.\"},\"upgradeTo(address,bytes)\":{\"notice\":\"Upgrades the `implementation` address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetProxy.sol\":\"WitnetProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x2b2f56fc69bf0e01f6f1062202d1682cd394fa3b3d9ff2f8f833ab51c9e866cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8017f76a71e4a52a5a5e249081c92510bac5b91f03f727e66ff4406238521337\",\"dweb:/ipfs/QmdWcPAL3MGtxGdpX5CMfgzz4YzxYEeCiFRoGHVCr8rLEL\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]},\"project:/contracts/patterns/Proxiable.sol\":{\"keccak256\":\"0x86032205378fed9ed2bf155eed8ce4bdbb13b7f5960850c6d50954a38b61a3d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f89978eda4244a13f42a6092a94ac829bb3e38c92d77d4978b9f32894b187a63\",\"dweb:/ipfs/Qmbc1XaFCvLm3Sxvh7tP29Ug32jBGy3avsCqBGAptxs765\"]},\"project:/contracts/patterns/Upgradeable.sol\":{\"keccak256\":\"0xbeb025c71f037acb1a668174eb6930631bf397129beb825f2660e5d8cf19614f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe6ce4dcd500093ae069d35b91829ccb471e1ca33ed0851fb053fbfe76c78aba\",\"dweb:/ipfs/QmT7huvCFS6bHDxt7HhEogJmyvYNbeb6dFTJudsVSX6nEs\"]}},\"version\":1}", "bytecode": "0x6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033", "deployedBytecode": "0x60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nativeSrc": "0:7316:84", "nodeType": "YulBlock", "src": "0:7316:84", "statements": [ { "nativeSrc": "6:3:84", "nodeType": "YulBlock", "src": "6:3:84", "statements": [] }, { "body": { "nativeSrc": "115:102:84", "nodeType": "YulBlock", "src": "115:102:84", "statements": [ { "nativeSrc": "125:26:84", "nodeType": "YulAssignment", "src": "125:26:84", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "137:9:84", "nodeType": "YulIdentifier", "src": "137:9:84" }, { "kind": "number", "nativeSrc": "148:2:84", "nodeType": "YulLiteral", "src": "148:2:84", "type": "", "value": "32" } ], "functionName": { "name": "add", "nativeSrc": "133:3:84", "nodeType": "YulIdentifier", "src": "133:3:84" }, "nativeSrc": "133:18:84", "nodeType": "YulFunctionCall", "src": "133:18:84" }, "variableNames": [ { "name": "tail", "nativeSrc": "125:4:84", "nodeType": "YulIdentifier", "src": "125:4:84" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nativeSrc": "167:9:84", "nodeType": "YulIdentifier", "src": "167:9:84" }, { "arguments": [ { "name": "value0", "nativeSrc": "182:6:84", "nodeType": "YulIdentifier", "src": "182:6:84" }, { "arguments": [ { "arguments": [ { "kind": "number", "nativeSrc": "198:3:84", "nodeType": "YulLiteral", "src": "198:3:84", "type": "", "value": "160" }, { "kind": "number", "nativeSrc": "203:1:84", "nodeType": "YulLiteral", "src": "203:1:84", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nativeSrc": "194:3:84", "nodeType": "YulIdentifier", "src": "194:3:84" }, "nativeSrc": "194:11:84", "nodeType": "YulFunctionCall", "src": "194:11:84" }, { "kind": "number", "nativeSrc": "207:1:84", "nodeType": "YulLiteral", "src": "207:1:84", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nativeSrc": "190:3:84", "nodeType": "YulIdentifier", "src": "190:3:84" }, "nativeSrc": "190:19:84", "nodeType": "YulFunctionCall", "src": "190:19:84" } ], "functionName": { "name": "and", "nativeSrc": "178:3:84", "nodeType": "YulIdentifier", "src": "178:3:84" }, "nativeSrc": "178:32:84", "nodeType": "YulFunctionCall", "src": "178:32:84" } ], "functionName": { "name": "mstore", "nativeSrc": "160:6:84", "nodeType": "YulIdentifier", "src": "160:6:84" }, "nativeSrc": "160:51:84", "nodeType": "YulFunctionCall", "src": "160:51:84" }, "nativeSrc": "160:51:84", "nodeType": "YulExpressionStatement", "src": "160:51:84" } ] }, "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nativeSrc": "14:203:84", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nativeSrc": "84:9:84", "nodeType": "YulTypedName", "src": "84:9:84", "type": "" }, { "name": "value0", "nativeSrc": "95:6:84", "nodeType": "YulTypedName", "src": "95:6:84", "type": "" } ], "returnVariables": [ { "name": "tail", "nativeSrc": "106:4:84", "nodeType": "YulTypedName", "src": "106:4:84", "type": "" } ], "src": "14:203:84" }, { "body": { "nativeSrc": "254:95:84", "nodeType": "YulBlock", "src": "254:95:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "271:1:84", "nodeType": "YulLiteral", "src": "271:1:84", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nativeSrc": "278:3:84", "nodeType": "YulLiteral", "src": "278:3:84", "type": "", "value": "224" }, { "kind": "number", "nativeSrc": "283:10:84", "nodeType": "YulLiteral", "src": "283:10:84", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nativeSrc": "274:3:84", "nodeType": "YulIdentifier", "src": "274:3:84" }, "nativeSrc": "274:20:84", "nodeType": "YulFunctionCall", "src": "274:20:84" } ], "functionName": { "name": "mstore", "nativeSrc": "264:6:84", "nodeType": "YulIdentifier", "src": "264:6:84" }, "nativeSrc": "264:31:84", "nodeType": "YulFunctionCall", "src": "264:31:84" }, "nativeSrc": "264:31:84", "nodeType": "YulExpressionStatement", "src": "264:31:84" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "311:1:84", "nodeType": "YulLiteral", "src": "311:1:84", "type": "", "value": "4" }, { "kind": "number", "nativeSrc": "314:4:84", "nodeType": "YulLiteral", "src": "314:4:84", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nativeSrc": "304:6:84", "nodeType": "YulIdentifier", "src": "304:6:84" }, "nativeSrc": "304:15:84", "nodeType": "YulFunctionCall", "src": "304:15:84" }, "nativeSrc": "304:15:84", "nodeType": "YulExpressionStatement", "src": "304:15:84" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "335:1:84", "nodeType": "YulLiteral", "src": "335:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "338:4:84", "nodeType": "YulLiteral", "src": "338:4:84", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nativeSrc": "328:6:84", "nodeType": "YulIdentifier", "src": "328:6:84" }, "nativeSrc": "328:15:84", "nodeType": "YulFunctionCall", "src": "328:15:84" }, "nativeSrc": "328:15:84", "nodeType": "YulExpressionStatement", "src": "328:15:84" } ] }, "name": "panic_error_0x41", "nativeSrc": "222:127:84", "nodeType": "YulFunctionDefinition", "src": "222:127:84" }, { "body": { "nativeSrc": "399:230:84", "nodeType": "YulBlock", "src": "399:230:84", "statements": [ { "nativeSrc": "409:19:84", "nodeType": "YulAssignment", "src": "409:19:84", "value": { "arguments": [ { "kind": "number", "nativeSrc": "425:2:84", "nodeType": "YulLiteral", "src": "425:2:84", "type": "", "value": "64" } ], "functionName": { "name": "mload", "nativeSrc": "419:5:84", "nodeType": "YulIdentifier", "src": "419:5:84" }, "nativeSrc": "419:9:84", "nodeType": "YulFunctionCall", "src": "419:9:84" }, "variableNames": [ { "name": "memPtr", "nativeSrc": "409:6:84", "nodeType": "YulIdentifier", "src": "409:6:84" } ] }, { "nativeSrc": "437:58:84", "nodeType": "YulVariableDeclaration", "src": "437:58:84", "value": { "arguments": [ { "name": "memPtr", "nativeSrc": "459:6:84", "nodeType": "YulIdentifier", "src": "459:6:84" }, { "arguments": [ { "arguments": [ { "name": "size", "nativeSrc": "475:4:84", "nodeType": "YulIdentifier", "src": "475:4:84" }, { "kind": "number", "nativeSrc": "481:2:84", "nodeType": "YulLiteral", "src": "481:2:84", "type": "", "value": "31" } ], "functionName": { "name": "add", "nativeSrc": "471:3:84", "nodeType": "YulIdentifier", "src": "471:3:84" }, "nativeSrc": "471:13:84", "nodeType": "YulFunctionCall", "src": "471:13:84" }, { "arguments": [ { "kind": "number", "nativeSrc": "490:2:84", "nodeType": "YulLiteral", "src": "490:2:84", "type": "", "value": "31" } ], "functionName": { "name": "not", "nativeSrc": "486:3:84", "nodeType": "YulIdentifier", "src": "486:3:84" }, "nativeSrc": "486:7:84", "nodeType": "YulFunctionCall", "src": "486:7:84" } ], "functionName": { "name": "and", "nativeSrc": "467:3:84", "nodeType": "YulIdentifier", "src": "467:3:84" }, "nativeSrc": "467:27:84", "nodeType": "YulFunctionCall", "src": "467:27:84" } ], "functionName": { "name": "add", "nativeSrc": "455:3:84", "nodeType": "YulIdentifier", "src": "455:3:84" }, "nativeSrc": "455:40:84", "nodeType": "YulFunctionCall", "src": "455:40:84" }, "variables": [ { "name": "newFreePtr", "nativeSrc": "441:10:84", "nodeType": "YulTypedName", "src": "441:10:84", "type": "" } ] }, { "body": { "nativeSrc": "570:22:84", "nodeType": "YulBlock", "src": "570:22:84", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nativeSrc": "572:16:84", "nodeType": "YulIdentifier", "src": "572:16:84" }, "nativeSrc": "572:18:84", "nodeType": "YulFunctionCall", "src": "572:18:84" }, "nativeSrc": "572:18:84", "nodeType": "YulExpressionStatement", "src": "572:18:84" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "newFreePtr", "nativeSrc": "513:10:84", "nodeType": "YulIdentifier", "src": "513:10:84" }, { "kind": "number", "nativeSrc": "525:18:84", "nodeType": "YulLiteral", "src": "525:18:84", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "510:2:84", "nodeType": "YulIdentifier", "src": "510:2:84" }, "nativeSrc": "510:34:84", "nodeType": "YulFunctionCall", "src": "510:34:84" }, { "arguments": [ { "name": "newFreePtr", "nativeSrc": "549:10:84", "nodeType": "YulIdentifier", "src": "549:10:84" }, { "name": "memPtr", "nativeSrc": "561:6:84", "nodeType": "YulIdentifier", "src": "561:6:84" } ], "functionName": { "name": "lt", "nativeSrc": "546:2:84", "nodeType": "YulIdentifier", "src": "546:2:84" }, "nativeSrc": "546:22:84", "nodeType": "YulFunctionCall", "src": "546:22:84" } ], "functionName": { "name": "or", "nativeSrc": "507:2:84", "nodeType": "YulIdentifier", "src": "507:2:84" }, "nativeSrc": "507:62:84", "nodeType": "YulFunctionCall", "src": "507:62:84" }, "nativeSrc": "504:88:84", "nodeType": "YulIf", "src": "504:88:84" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "608:2:84", "nodeType": "YulLiteral", "src": "608:2:84", "type": "", "value": "64" }, { "name": "newFreePtr", "nativeSrc": "612:10:84", "nodeType": "YulIdentifier", "src": "612:10:84" } ], "functionName": { "name": "mstore", "nativeSrc": "601:6:84", "nodeType": "YulIdentifier", "src": "601:6:84" }, "nativeSrc": "601:22:84", "nodeType": "YulFunctionCall", "src": "601:22:84" }, "nativeSrc": "601:22:84", "nodeType": "YulExpressionStatement", "src": "601:22:84" } ] }, "name": "allocate_memory", "nativeSrc": "354:275:84", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "size", "nativeSrc": "379:4:84", "nodeType": "YulTypedName", "src": "379:4:84", "type": "" } ], "returnVariables": [ { "name": "memPtr", "nativeSrc": "388:6:84", "nodeType": "YulTypedName", "src": "388:6:84", "type": "" } ], "src": "354:275:84" }, { "body": { "nativeSrc": "691:129:84", "nodeType": "YulBlock", "src": "691:129:84", "statements": [ { "body": { "nativeSrc": "735:22:84", "nodeType": "YulBlock", "src": "735:22:84", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nativeSrc": "737:16:84", "nodeType": "YulIdentifier", "src": "737:16:84" }, "nativeSrc": "737:18:84", "nodeType": "YulFunctionCall", "src": "737:18:84" }, "nativeSrc": "737:18:84", "nodeType": "YulExpressionStatement", "src": "737:18:84" } ] }, "condition": { "arguments": [ { "name": "length", "nativeSrc": "707:6:84", "nodeType": "YulIdentifier", "src": "707:6:84" }, { "kind": "number", "nativeSrc": "715:18:84", "nodeType": "YulLiteral", "src": "715:18:84", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "704:2:84", "nodeType": "YulIdentifier", "src": "704:2:84" }, "nativeSrc": "704:30:84", "nodeType": "YulFunctionCall", "src": "704:30:84" }, "nativeSrc": "701:56:84", "nodeType": "YulIf", "src": "701:56:84" }, { "nativeSrc": "766:48:84", "nodeType": "YulAssignment", "src": "766:48:84", "value": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "length", "nativeSrc": "786:6:84", "nodeType": "YulIdentifier", "src": "786:6:84" }, { "kind": "number", "nativeSrc": "794:2:84", "nodeType": "YulLiteral", "src": "794:2:84", "type": "", "value": "31" } ], "functionName": { "name": "add", "nativeSrc": "782:3:84", "nodeType": "YulIdentifier", "src": "782:3:84" }, "nativeSrc": "782:15:84", "nodeType": "YulFunctionCall", "src": "782:15:84" }, { "arguments": [ { "kind": "number", "nativeSrc": "803:2:84", "nodeType": "YulLiteral", "src": "803:2:84", "type": "", "value": "31" } ], "functionName": { "name": "not", "nativeSrc": "799:3:84", "nodeType": "YulIdentifier", "src": "799:3:84" }, "nativeSrc": "799:7:84", "nodeType": "YulFunctionCall", "src": "799:7:84" } ], "functionName": { "name": "and", "nativeSrc": "778:3:84", "nodeType": "YulIdentifier", "src": "778:3:84" }, "nativeSrc": "778:29:84", "nodeType": "YulFunctionCall", "src": "778:29:84" }, { "kind": "number", "nativeSrc": "809:4:84", "nodeType": "YulLiteral", "src": "809:4:84", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nativeSrc": "774:3:84", "nodeType": "YulIdentifier", "src": "774:3:84" }, "nativeSrc": "774:40:84", "nodeType": "YulFunctionCall", "src": "774:40:84" }, "variableNames": [ { "name": "size", "nativeSrc": "766:4:84", "nodeType": "YulIdentifier", "src": "766:4:84" } ] } ] }, "name": "array_allocation_size_bytes", "nativeSrc": "634:186:84", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "length", "nativeSrc": "671:6:84", "nodeType": "YulTypedName", "src": "671:6:84", "type": "" } ], "returnVariables": [ { "name": "size", "nativeSrc": "682:4:84", "nodeType": "YulTypedName", "src": "682:4:84", "type": "" } ], "src": "634:186:84" }, { "body": { "nativeSrc": "921:749:84", "nodeType": "YulBlock", "src": "921:749:84", "statements": [ { "body": { "nativeSrc": "967:16:84", "nodeType": "YulBlock", "src": "967:16:84", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "976:1:84", "nodeType": "YulLiteral", "src": "976:1:84", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "979:1:84", "nodeType": "YulLiteral", "src": "979:1:84", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "969:6:84", "nodeType": "YulIdentifier", "src": "969:6:84" }, "nativeSrc": "969:12:84", "nodeType": "YulFunctionCall", "src": "969:12:84" }, "nativeSrc": "969:12:84", "nodeType": "YulExpressionStatement", "src": "969:12:84" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nativeSrc": "942:7:84", "nodeType": "YulIdentifier", "src": "942:7:84" }, { "name": "headStart", "nativeSrc": "951:9:84", "nodeType": "YulIdentifier", "src": "951:9:84" } ], "functionName": { "name": "sub", "nativeSrc": "938:3:84", "nodeType": "YulIdentifier", "src": "938:3:84" }, "nativeSrc": "938:23:84", "nodeType": "YulFunctionCall", "src": "938:23:84" }, { "kind": "number", "nativeSrc": "963:2:84", "nodeType": "YulLiteral", "src": "963:2:84", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nativeSrc": "934:3:84", "nodeType": "YulIdentifier", "src": "934:3:84" }, "nativeSrc": "934:32:84", "nodeType": "YulFunctionCall", "src": "934:32:84" }, "nativeSrc": "931:52:84", "nodeType": "YulIf",