[ { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" } ], "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": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_logic", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "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" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a060405234801561001057600080fd5b506040516109ff3803806109ff83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516109516100ae6000396000818161014e0152818161019f015281816102710152818161040d0152818161043601526105a601526109516000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100d5578063f851a440146100e85761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100fd565b005b34801561007057600080fd5b5061006261007f3660046106b9565b610137565b6100626100923660046106db565b610188565b3480156100a357600080fd5b506100ac610258565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100626100e336600461078d565b6102c8565b3480156100f457600080fd5b506100ac6103f4565b610105610458565b6101356101307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610460565b565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036101805761017d81610484565b50565b61017d6100fd565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361024b576101ce83610484565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101f792919061086d565b600060405180830381855af49150503d8060008114610232576040519150601f19603f3d011682016040523d82523d6000602084013e610237565b606091505b505090508061024557600080fd5b50505050565b6102536100fd565b505050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102bd57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102c56100fd565b90565b60006102f27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b73ffffffffffffffffffffffffffffffffffffffff161461031257600080fd5b61033d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61087d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461036b5761036b6108bd565b610374826104d1565b8051156103f05760008273ffffffffffffffffffffffffffffffffffffffff16826040516103a291906108ec565b600060405180830381855af49150503d80600081146103dd576040519150601f19603f3d011682016040523d82523d6000602084013e6103e2565b606091505b505090508061025357600080fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102bd57507f000000000000000000000000000000000000000000000000000000000000000090565b61013561058f565b3660008037600080366000845af43d6000803e80801561047f573d6000f35b3d6000fd5b61048d816104d1565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104da81610654565b61056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152608401610562565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061068857508115155b949350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106b457600080fd5b919050565b6000602082840312156106cb57600080fd5b6106d482610690565b9392505050565b6000806000604084860312156106f057600080fd5b6106f984610690565b9250602084013567ffffffffffffffff8082111561071657600080fd5b818601915086601f83011261072a57600080fd5b81358181111561073957600080fd5b87602082850101111561074b57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156107a057600080fd5b6107a983610690565b9150602083013567ffffffffffffffff808211156107c657600080fd5b818501915085601f8301126107da57600080fd5b8135818111156107ec576107ec61075e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156108325761083261075e565b8160405282815288602084870101111561084b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b818103818111156108b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b8181101561090d57602081860181015185830152016108f3565b50600092019182525091905056fea2646970667358221220fdefac4df59f9f4207e3e17e41e79a5bcf440ae3f7eaf55baa08ea6f817e80d164736f6c6343000811003300000000000000000000000049c64d9dfd264d56386927488e890d15bf45bc1e