witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
744 lines • 359 kB
JSON
{
"contractName": "WitnetDeployerDeferred",
"abi": [
{
"inputs": [
{
"internalType": "bytes",
"name": "_initCode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "deploy",
"outputs": [
{
"internalType": "address",
"name": "_deployed",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_initCode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "determineAddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "determineProxyAddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proxySalt",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_firstImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_initData",
"type": "bytes"
}
],
"name": "proxify",
"outputs": [
{
"internalType": "contract WitnetProxy",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_deployed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineProxyAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proxySalt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_firstImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"proxify\",\"outputs\":[{\"internalType\":\"contract WitnetProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"details\":\"To be used on EVM chains where contract deployment takes place in a deferred way: - after the deployment tx gets mined, and not while it gets executed.\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes,bytes32)\":{\"details\":\"The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). \",\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_deployed\":\"Just deployed contract address.\"}},\"determineAddr(bytes,bytes32)\":{\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_0\":\"Deterministic contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes,bytes32)\":{\"notice\":\"Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \"},\"determineAddr(bytes,bytes32)\":{\"notice\":\"Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\"}},\"notice\":\"WitnetDeployerNoChecks contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies. \",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployerDeferred.sol\":\"WitnetDeployerDeferred\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project:/contracts/core/WitnetDeployerDeferred.sol\":{\"keccak256\":\"0xa9bd1815241e770fed3c60ee5e3829fc6653257958fc190ffd7180c52a0acda8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e5d93d9840b9bf592be2308319c3bd06116350bbaeed382bf2d17fa5004624\",\"dweb:/ipfs/QmbJ3Y76LB46upNzCCi6bCow4DtUjSBTekSaWbqhbeEi1s\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/libs/Create3.sol\":{\"keccak256\":\"0xfbda4c773f859bef9d7878ca9412f244da85f7bd49df07c49a17544f4708d718\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f83b72ad1c35c707cc6daa4e8266d9d711f561a188fbb0be1885d3f08146ca6\",\"dweb:/ipfs/QmPJwdieqkxoSvqmczAtRMfb5EN8uWiabqMKj4yVqsUncv\"]},\"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\":\"0x49d1a83abc7a9b39d224677dde65ead4b7f1104332a94c9e619854b2a6b3a89e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6a798a953af921a5b4e24e3f78bebae97819a85c90deb12ec505952faa42814\",\"dweb:/ipfs/QmVJhv4x3MXf4aDbMC5Q259K8kZNvxSXzmy8anoow7nS7k\"]}},\"version\":1}",
"bytecode": "0x6080604052348015600e575f5ffd5b506110ed8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610535565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046105eb565b6100c6565b61006161009e36600461062d565b6100f4565b6100616100b13660046105eb565b61023c565b5f6100c082610298565b92915050565b5f6100d1838361023c565b9050806001600160a01b03163b5f036100c057818351602085015ff59392505050565b5f5f6100ff856100b6565b9050806001600160a01b03163b5f036101d65761013e856040518060200161012690610528565b601f1982820381018352601f9091011660405261036b565b50806001600160a01b0316636fbc15e985338660405160200161016292919061068d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161018e92919061068d565b6020604051808303815f875af11580156101aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ce91906106d1565b509050610235565b60405162461bcd60e51b815260206004820152602960248201527f5769746e65744465706c6f79657244656665727265643a20616c7265616479206044820152681c1c9bde1a599a595960ba1b60648201526084015b60405180910390fd5b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b5f61023583835f5f61037c84610298565b90506001600160a01b0381163b156103d65760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c7265616479206578697374730000604482015260640161022c565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b602083019081525f9291879184f591506001600160a01b03821661045f5760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f727900604482015260640161022c565b5f826001600160a01b0316858760405161047991906106f0565b5f6040518083038185875af1925050503d805f81146104b3576040519150601f19603f3d011682016040523d82523d5f602084013e6104b8565b606091505b505090508080156104d257506001600160a01b0384163b15155b61051e5760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e67207461726765740000604482015260640161022c565b5050509392505050565b6109b18061070783390190565b5f60208284031215610545575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261056f575f5ffd5b813567ffffffffffffffff8111156105895761058961054c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b8576105b861054c565b6040528181528382016020018510156105cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156105fc575f5ffd5b823567ffffffffffffffff811115610612575f5ffd5b61061e85828601610560565b95602094909401359450505050565b5f5f5f6060848603121561063f575f5ffd5b8335925060208401356001600160a01b038116811461065c575f5ffd5b9150604084013567ffffffffffffffff811115610677575f5ffd5b61068386828701610560565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156106e1575f5ffd5b81518015158114610235575f5ffd5b5f82518060208501845e5f92019182525091905056fe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a26469706673582212203db8edbce82d5f50d09e9cba8592a265bfc4069583817f309527436a7068839864736f6c634300081e0033",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610535565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046105eb565b6100c6565b61006161009e36600461062d565b6100f4565b6100616100b13660046105eb565b61023c565b5f6100c082610298565b92915050565b5f6100d1838361023c565b9050806001600160a01b03163b5f036100c057818351602085015ff59392505050565b5f5f6100ff856100b6565b9050806001600160a01b03163b5f036101d65761013e856040518060200161012690610528565b601f1982820381018352601f9091011660405261036b565b50806001600160a01b0316636fbc15e985338660405160200161016292919061068d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161018e92919061068d565b6020604051808303815f875af11580156101aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ce91906106d1565b509050610235565b60405162461bcd60e51b815260206004820152602960248201527f5769746e65744465706c6f79657244656665727265643a20616c7265616479206044820152681c1c9bde1a599a595960ba1b60648201526084015b60405180910390fd5b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b5f61023583835f5f61037c84610298565b90506001600160a01b0381163b156103d65760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c7265616479206578697374730000604482015260640161022c565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b602083019081525f9291879184f591506001600160a01b03821661045f5760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f727900604482015260640161022c565b5f826001600160a01b0316858760405161047991906106f0565b5f6040518083038185875af1925050503d805f81146104b3576040519150601f19603f3d011682016040523d82523d5f602084013e6104b8565b606091505b505090508080156104d257506001600160a01b0384163b15155b61051e5760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e67207461726765740000604482015260640161022c565b5050509392505050565b6109b18061070783390190565b5f60208284031215610545575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261056f575f5ffd5b813567ffffffffffffffff8111156105895761058961054c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b8576105b861054c565b6040528181528382016020018510156105cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156105fc575f5ffd5b823567ffffffffffffffff811115610612575f5ffd5b61061e85828601610560565b95602094909401359450505050565b5f5f5f6060848603121561063f575f5ffd5b8335925060208401356001600160a01b038116811461065c575f5ffd5b9150604084013567ffffffffffffffff811115610677575f5ffd5b61068386828701610560565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156106e1575f5ffd5b81518015158114610235575f5ffd5b5f82518060208501845e5f92019182525091905056fe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a26469706673582212203db8edbce82d5f50d09e9cba8592a265bfc4069583817f309527436a7068839864736f6c634300081e0033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:6679:136",
"nodeType": "YulBlock",
"src": "0:6679:136",
"statements": [
{
"nativeSrc": "6:3:136",
"nodeType": "YulBlock",
"src": "6:3:136",
"statements": []
},
{
"body": {
"nativeSrc": "84:156:136",
"nodeType": "YulBlock",
"src": "84:156:136",
"statements": [
{
"body": {
"nativeSrc": "130:16:136",
"nodeType": "YulBlock",
"src": "130:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "139:1:136",
"nodeType": "YulLiteral",
"src": "139:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "142:1:136",
"nodeType": "YulLiteral",
"src": "142:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "132:6:136",
"nodeType": "YulIdentifier",
"src": "132:6:136"
},
"nativeSrc": "132:12:136",
"nodeType": "YulFunctionCall",
"src": "132:12:136"
},
"nativeSrc": "132:12:136",
"nodeType": "YulExpressionStatement",
"src": "132:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "105:7:136",
"nodeType": "YulIdentifier",
"src": "105:7:136"
},
{
"name": "headStart",
"nativeSrc": "114:9:136",
"nodeType": "YulIdentifier",
"src": "114:9:136"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "101:3:136",
"nodeType": "YulIdentifier",
"src": "101:3:136"
},
"nativeSrc": "101:23:136",
"nodeType": "YulFunctionCall",
"src": "101:23:136"
},
{
"kind": "number",
"nativeSrc": "126:2:136",
"nodeType": "YulLiteral",
"src": "126:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "97:3:136",
"nodeType": "YulIdentifier",
"src": "97:3:136"
},
"nativeSrc": "97:32:136",
"nodeType": "YulFunctionCall",
"src": "97:32:136"
},
"nativeSrc": "94:52:136",
"nodeType": "YulIf",
"src": "94:52:136"
},
{
"nativeSrc": "155:14:136",
"nodeType": "YulVariableDeclaration",
"src": "155:14:136",
"value": {
"kind": "number",
"nativeSrc": "168:1:136",
"nodeType": "YulLiteral",
"src": "168:1:136",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nativeSrc": "159:5:136",
"nodeType": "YulTypedName",
"src": "159:5:136",
"type": ""
}
]
},
{
"nativeSrc": "178:32:136",
"nodeType": "YulAssignment",
"src": "178:32:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "200:9:136",
"nodeType": "YulIdentifier",
"src": "200:9:136"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "187:12:136",
"nodeType": "YulIdentifier",
"src": "187:12:136"
},
"nativeSrc": "187:23:136",
"nodeType": "YulFunctionCall",
"src": "187:23:136"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "178:5:136",
"nodeType": "YulIdentifier",
"src": "178:5:136"
}
]
},
{
"nativeSrc": "219:15:136",
"nodeType": "YulAssignment",
"src": "219:15:136",
"value": {
"name": "value",
"nativeSrc": "229:5:136",
"nodeType": "YulIdentifier",
"src": "229:5:136"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "219:6:136",
"nodeType": "YulIdentifier",
"src": "219:6:136"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nativeSrc": "14:226:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "50:9:136",
"nodeType": "YulTypedName",
"src": "50:9:136",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "61:7:136",
"nodeType": "YulTypedName",
"src": "61:7:136",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "73:6:136",
"nodeType": "YulTypedName",
"src": "73:6:136",
"type": ""
}
],
"src": "14:226:136"
},
{
"body": {
"nativeSrc": "346:102:136",
"nodeType": "YulBlock",
"src": "346:102:136",
"statements": [
{
"nativeSrc": "356:26:136",
"nodeType": "YulAssignment",
"src": "356:26:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "368:9:136",
"nodeType": "YulIdentifier",
"src": "368:9:136"
},
{
"kind": "number",
"nativeSrc": "379:2:136",
"nodeType": "YulLiteral",
"src": "379:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "364:3:136",
"nodeType": "YulIdentifier",
"src": "364:3:136"
},
"nativeSrc": "364:18:136",
"nodeType": "YulFunctionCall",
"src": "364:18:136"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "356:4:136",
"nodeType": "YulIdentifier",
"src": "356:4:136"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "398:9:136",
"nodeType": "YulIdentifier",
"src": "398:9:136"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "413:6:136",
"nodeType": "YulIdentifier",
"src": "413:6:136"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "429:3:136",
"nodeType": "YulLiteral",
"src": "429:3:136",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "434:1:136",
"nodeType": "YulLiteral",
"src": "434:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "425:3:136",
"nodeType": "YulIdentifier",
"src": "425:3:136"
},
"nativeSrc": "425:11:136",
"nodeType": "YulFunctionCall",
"src": "425:11:136"
},
{
"kind": "number",
"nativeSrc": "438:1:136",
"nodeType": "YulLiteral",
"src": "438:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "421:3:136",
"nodeType": "YulIdentifier",
"src": "421:3:136"
},
"nativeSrc": "421:19:136",
"nodeType": "YulFunctionCall",
"src": "421:19:136"
}
],
"functionName": {
"name": "and",
"nativeSrc": "409:3:136",
"nodeType": "YulIdentifier",
"src": "409:3:136"
},
"nativeSrc": "409:32:136",
"nodeType": "YulFunctionCall",
"src": "409:32:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "391:6:136",
"nodeType": "YulIdentifier",
"src": "391:6:136"
},
"nativeSrc": "391:51:136",
"nodeType": "YulFunctionCall",
"src": "391:51:136"
},
"nativeSrc": "391:51:136",
"nodeType": "YulExpressionStatement",
"src": "391:51:136"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "245:203:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "315:9:136",
"nodeType": "YulTypedName",
"src": "315:9:136",
"type": ""
},
{
"name": "value0",
"nativeSrc": "326:6:136",
"nodeType": "YulTypedName",
"src": "326:6:136",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "337:4:136",
"nodeType": "YulTypedName",
"src": "337:4:136",
"type": ""
}
],
"src": "245:203:136"
},
{
"body": {
"nativeSrc": "485:95:136",
"nodeType": "YulBlock",
"src": "485:95:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "502:1:136",
"nodeType": "YulLiteral",
"src": "502:1:136",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "509:3:136",
"nodeType": "YulLiteral",
"src": "509:3:136",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "514:10:136",
"nodeType": "YulLiteral",
"src": "514:10:136",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "505:3:136",
"nodeType": "YulIdentifier",
"src": "505:3:136"
},
"nativeSrc": "505:20:136",
"nodeType": "YulFunctionCall",
"src": "505:20:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "495:6:136",
"nodeType": "YulIdentifier",
"src": "495:6:136"
},
"nativeSrc": "495:31:136",
"nodeType": "YulFunctionCall",
"src": "495:31:136"
},
"nativeSrc": "495:31:136",
"nodeType": "YulExpressionStatement",
"src": "495:31:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "542:1:136",
"nodeType": "YulLiteral",
"src": "542:1:136",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "545:4:136",
"nodeType": "YulLiteral",
"src": "545:4:136",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "535:6:136",
"nodeType": "YulIdentifier",
"src": "535:6:136"
},
"nativeSrc": "535:15:136",
"nodeType": "YulFunctionCall",
"src": "535:15:136"
},
"nativeSrc": "535:15:136",
"nodeType": "YulExpressionStatement",
"src": "535:15:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "566:1:136",
"nodeType": "YulLiteral",
"src": "566:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "569:4:136",
"nodeType": "YulLiteral",
"src": "569:4:136",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "559:6:136",
"nodeType": "YulIdentifier",
"src": "559:6:136"
},
"nativeSrc": "559:15:136",
"nodeType": "YulFunctionCall",
"src": "559:15:136"
},
"nativeSrc": "559:15:136",
"nodeType": "YulExpressionStatement",
"src": "559:15:136"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "453:127:136",
"nodeType": "YulFunctionDefinition",
"src": "453:127:136"
},
{
"body": {
"nativeSrc": "637:673:136",
"nodeType": "YulBlock",
"src": "637:673:136",
"statements": [
{
"body": {
"nativeSrc": "686:16:136",
"nodeType": "YulBlock",
"src": "686:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "695:1:136",
"nodeType": "YulLiteral",
"src": "695:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "698:1:136",
"nodeType": "YulLiteral",
"src": "698:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "688:6:136",
"nodeType": "YulIdentifier",
"src": "688:6:136"
},
"nativeSrc": "688:12:136",
"nodeType": "YulFunctionCall",
"src": "688:12:136"
},
"nativeSrc": "688:12:136",
"nodeType": "YulExpressionStatement",
"src": "688:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "665:6:136",
"nodeType": "YulIdentifier",
"src": "665:6:136"
},
{
"kind": "number",
"nativeSrc": "673:4:136",
"nodeType": "YulLiteral",
"src": "673:4:136",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "661:3:136",
"nodeType": "YulIdentifier",
"src": "661:3:136"
},
"nativeSrc": "661:17:136",
"nodeType": "YulFunctionCall",
"src": "661:17:136"
},
{
"name": "end",
"nativeSrc": "680:3:136",
"nodeType": "YulIdentifier",
"src": "680:3:136"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "657:3:136",
"nodeType": "YulIdentifier",
"src": "657:3:136"
},
"nativeSrc": "657:27:136",
"nodeType": "YulFunctionCall",
"src": "657:27:136"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "650:6:136",
"nodeType": "YulIdentifier",
"src": "650:6:136"
},
"nativeSrc": "650:35:136",
"nodeType": "YulFunctionCall",
"src": "650:35:136"
},
"nativeSrc": "647:55:136",
"nodeType": "YulIf",
"src": "647:55:136"
},
{
"nativeSrc": "711:34:136",
"nodeType": "YulVariableDeclaration",
"src": "711:34:136",
"va