[ { "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" } ]
60a060405234801561001057600080fd5b506040516107ee3803806107ee83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6107476100a76000398060ff5280610149528061020252806102e85280610311528061042352506107476000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100745780635c60da1b14610087578063d1f57894146100b2578063f851a440146100c5575b6100526100da565b005b34801561006057600080fd5b5061005261006f3660046104be565b6100f4565b6100526100823660046104df565b61013e565b34801561009357600080fd5b5061009c6101f5565b6040516100a9919061064e565b60405180910390f35b6100526100c036600461055d565b610242565b3480156100d157600080fd5b5061009c6102db565b6100e2610335565b6100f26100ed61033d565b610362565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101335761012e81610386565b61013b565b61013b6100da565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101e85761017883610386565b6000836001600160a01b03168383604051610194929190610605565b600060405180830381855af49150503d80600081146101cf576040519150601f19603f3d011682016040523d82523d6000602084013e6101d4565b606091505b50509050806101e257600080fd5b506101f0565b6101f06100da565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102375761023061033d565b905061023f565b61023f6100da565b90565b600061024c61033d565b6001600160a01b03161461025f57600080fd5b610268826103c6565b8051156102d7576000826001600160a01b0316826040516102899190610615565b600060405180830381855af49150503d80600081146102c4576040519150601f19603f3d011682016040523d82523d6000602084013e6102c9565b606091505b50509050806101f057600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561023757507f000000000000000000000000000000000000000000000000000000000000000061023f565b6100f2610418565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610381573d6000f35b3d6000fd5b61038f816103c6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6103cf81610469565b6103f45760405162461bcd60e51b81526004016103eb906106b4565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156104615760405162461bcd60e51b81526004016103eb90610662565b6100f26100f2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061049d57508115155b925050505b919050565b80356001600160a01b03811681146104a257600080fd5b6000602082840312156104cf578081fd5b6104d8826104a7565b9392505050565b6000806000604084860312156104f3578182fd5b6104fc846104a7565b9250602084013567ffffffffffffffff80821115610518578384fd5b818601915086601f83011261052b578384fd5b813581811115610539578485fd5b87602082850101111561054a578485fd5b6020830194508093505050509250925092565b6000806040838503121561056f578182fd5b610578836104a7565b915060208084013567ffffffffffffffff80821115610595578384fd5b818601915086601f8301126105a8578384fd5b8135818111156105b457fe5b604051601f8201601f19168101850183811182821017156105d157fe5b60405281815283820185018910156105e7578586fd5b81858501868301378585838301015280955050505050509250929050565b6000828483379101908152919050565b60008251815b81811015610635576020818601810151858301520161061b565b818111156106435782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b60208082526032908201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260408201527137b6903a343290383937bc3c9030b236b4b760711b606082015260800190565b6020808252603b908201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60408201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060608201526080019056fea2646970667358221220565212d920e0858b3798f52203d6170f7ea6314763c319f0ee4ac5fda022b71f64736f6c63430007060033000000000000000000000000b9f8b06787d56183eae561eebbca8a4ce6f24121