[ { "inputs": [ { "internalType": "address", "name": "_logic", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "stateMutability": "payable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "adm", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "changeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "impl", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bool", "name": "forceCall", "type": "bool" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bool", "name": "forceCall", "type": "bool" } ], "name": "upgradeToAndCallSecure", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526040516200191e3803806200191e83398181016040528101906200002991906200077e565b60017f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1c5f1c6200005a919062000818565b5f1b7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b148015620000e0575060017f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102125f1c620000b9919062000818565b5f1b7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b145b620000f057620000ef62000852565b5b6200010382825f6200011c60201b60201c565b62000114336200015960201b60201c565b505062000a4a565b6200012d83620001b760201b60201c565b5f825111806200013a5750805b1562000154576200015283836200020e60201b60201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200018a6200029a60201b60201c565b826040516200019b92919062000890565b60405180910390a1620001b481620002f560201b60201c565b50565b620001c881620003dc60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000239919062000905565b5f60405180830381855af49150503d805f811462000273576040519150601f19603f3d011682016040523d82523d5f602084013e62000278565b606091505b509150915062000290858383620004ae60201b60201c565b9250505092915050565b5f620002ce7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6200054a60201b60201c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035d90620009a1565b60405180910390fd5b806200039a7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6200054a60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0362000438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042f9062000a0f565b60405180910390fd5b806200046c7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6200054a60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606082620004cd57620004c7826200055360201b60201c565b62000542565b5f8251148015620004f457505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156200053957836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000530919062000a2f565b60405180910390fd5b81905062000543565b5b9392505050565b5f819050919050565b5f81511115620005665780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005d482620005a9565b9050919050565b620005e681620005c8565b8114620005f1575f80fd5b50565b5f815190506200060481620005db565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200065a8262000612565b810181811067ffffffffffffffff821117156200067c576200067b62000622565b5b80604052505050565b5f6200069062000598565b90506200069e82826200064f565b919050565b5f67ffffffffffffffff821115620006c057620006bf62000622565b5b620006cb8262000612565b9050602081019050919050565b5f5b83811015620006f7578082015181840152602081019050620006da565b5f8484015250505050565b5f620007186200071284620006a3565b62000685565b9050828152602081018484840111156200073757620007366200060e565b5b62000744848285620006d8565b509392505050565b5f82601f8301126200076357620007626200060a565b5b81516200077584826020860162000702565b91505092915050565b5f8060408385031215620007975762000796620005a1565b5b5f620007a685828601620005f4565b925050602083015167ffffffffffffffff811115620007ca57620007c9620005a5565b5b620007d8858286016200074c565b9150509250929050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200082482620007e2565b91506200083183620007e2565b92508282039050818111156200084c576200084b620007eb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b6200088a81620005c8565b82525050565b5f604082019050620008a55f8301856200087f565b620008b460208301846200087f565b9392505050565b5f81519050919050565b5f81905092915050565b5f620008db82620008bb565b620008e78185620008c5565b9350620008f9818560208601620006d8565b80840191505092915050565b5f620009128284620008cf565b915081905092915050565b5f82825260208201905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f620009896026836200091d565b915062000996826200092d565b604082019050919050565b5f6020820190508181035f830152620009ba816200097b565b9050919050565b7f6e6f7420636f6e747261637400000000000000000000000000000000000000005f82015250565b5f620009f7600c836200091d565b915062000a0482620009c1565b602082019050919050565b5f6020820190508181035f83015262000a2881620009e9565b9050919050565b5f60208201905062000a445f8301846200087f565b92915050565b610ec68062000a585f395ff3fe608060405260043610610058575f3560e01c806306d2e426146100715780633659cfe61461008d578063559e0e03146100b55780635c60da1b146100d15780638f283970146100fb578063f851a4401461012357610067565b366100675761006561014d565b005b61006f61014d565b005b61008b60048036038101906100869190610b94565b610167565b005b348015610098575f80fd5b506100b360048036038101906100ae9190610c00565b6101bf565b005b6100cf60048036038101906100ca9190610b94565b610213565b005b3480156100dc575f80fd5b506100e561026b565b6040516100f29190610c3a565b60405180910390f35b348015610106575f80fd5b50610121600480360381019061011c9190610c00565b6102b4565b005b34801561012e575f80fd5b50610137610308565b6040516101449190610c3a565b60405180910390f35b610155610351565b610165610160610353565b610361565b565b61016f610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036101b1576101ac8383836103d3565b6101ba565b6101b961014d565b5b505050565b6101c7610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361020757610202816103fe565b610210565b61020f61014d565b5b50565b61021b610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361025d5761025883838361044d565b610266565b61026561014d565b5b505050565b5f610274610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102b1576102ae610353565b90505b90565b6102bc610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102fc576102f781610613565b610305565b61030461014d565b5b50565b5f610311610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361034e5761034b610380565b90505b90565b565b5f61035c61065f565b905090565b365f80375f80365f845af43d5f803e805f811461037c573d5ff35b3d5ffd5b5f6103ac7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103dc836103fe565b5f825111806103e85750805b156103f9576103f783836106bb565b505b505050565b6104078161073b565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f61045661065f565b90506104618461073b565b5f8351118061046d5750815b1561047e5761047c84846106bb565b505b5f6104aa7f9843adc2ce1ee58312ba81786d469e32c03edf6b0879757a3b7f4a49a98bfbc75f1b610802565b9050805f015f9054906101000a900460ff1661060c576001815f015f6101000a81548160ff02191690831515021790555061057285836040516024016104f09190610c3a565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106bb565b505f815f015f6101000a81548160ff02191690831515021790555061059561065f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f990610cd3565b60405180910390fd5b61060b856103fe565b5b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61063c610380565b8260405161064b929190610cf1565b60405180910390a161065c8161080b565b50565b5f61068b7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516106e49190610d84565b5f60405180830381855af49150503d805f811461071c576040519150601f19603f3d011682016040523d82523d5f602084013e610721565b606091505b50915091506107318583836108e7565b9250505092915050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b03610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90610de4565b60405180910390fd5b806107c07f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087090610e72565b60405180910390fd5b806108a57f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060826108fc576108f782610974565b61096c565b5f825114801561092257505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561096457836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161095b9190610c3a565b60405180910390fd5b81905061096d565b5b9392505050565b5f815111156109865780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109f2826109c9565b9050919050565b610a02816109e8565b8114610a0c575f80fd5b50565b5f81359050610a1d816109f9565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a7182610a2b565b810181811067ffffffffffffffff82111715610a9057610a8f610a3b565b5b80604052505050565b5f610aa26109b8565b9050610aae8282610a68565b919050565b5f67ffffffffffffffff821115610acd57610acc610a3b565b5b610ad682610a2b565b9050602081019050919050565b828183375f83830152505050565b5f610b03610afe84610ab3565b610a99565b905082815260208101848484011115610b1f57610b1e610a27565b5b610b2a848285610ae3565b509392505050565b5f82601f830112610b4657610b45610a23565b5b8135610b56848260208601610af1565b91505092915050565b5f8115159050919050565b610b7381610b5f565b8114610b7d575f80fd5b50565b5f81359050610b8e81610b6a565b92915050565b5f805f60608486031215610bab57610baa6109c1565b5b5f610bb886828701610a0f565b935050602084013567ffffffffffffffff811115610bd957610bd86109c5565b5b610be586828701610b32565b9250506040610bf686828701610b80565b9150509250925092565b5f60208284031215610c1557610c146109c1565b5b5f610c2284828501610a0f565b91505092915050565b610c34816109e8565b82525050565b5f602082019050610c4d5f830184610c2b565b92915050565b5f82825260208201905092915050565b7f45524331393637557067726164653a207570677261646520627265616b7320665f8201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b5f610cbd602f83610c53565b9150610cc882610c63565b604082019050919050565b5f6020820190508181035f830152610cea81610cb1565b9050919050565b5f604082019050610d045f830185610c2b565b610d116020830184610c2b565b9392505050565b5f81519050919050565b5f81905092915050565b5f5b83811015610d49578082015181840152602081019050610d2e565b5f8484015250505050565b5f610d5e82610d18565b610d688185610d22565b9350610d78818560208601610d2c565b80840191505092915050565b5f610d8f8284610d54565b915081905092915050565b7f6e6f7420636f6e747261637400000000000000000000000000000000000000005f82015250565b5f610dce600c83610c53565b9150610dd982610d9a565b602082019050919050565b5f6020820190508181035f830152610dfb81610dc2565b9050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e5c602683610c53565b9150610e6782610e02565b604082019050919050565b5f6020820190508181035f830152610e8981610e50565b905091905056fea2646970667358221220bab8df286ae2f47729fa3b4dcd54d83c3cb075f82e803b02fef510ae7e74192c64736f6c6343000814003300000000000000000000000038dd843cbd178fd68622018dd17585e13c8b1d30000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a433e1a223000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad13000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad1300000000000000000000000000000000000000001b29d4fa5108a361833c0000000000000000000000000000127a8e43ab4bb879f55841a2ea0e8d0198768aa3000000000000000000000000135fb1822b774013a993a400301eb60a7a1e33d400000000000000000000000000000000000000000000000000000000