{"file_path":"UpgradeDelegator.sol","creation_status":"success","source_code":"pragma solidity ^0.6.0;\r\n\r\n\r\n/**\r\n * @dev Interface of the openzeppeling AdminUpgradeabilityProxy\r\n */\r\ninterface IOZAdminUpgradeabilityProxy {\r\n    /**\r\n     * @dev Emitted when the administration has been transferred.\r\n     * @param previousAdmin Address of the previous admin.\r\n     * @param newAdmin Address of the new admin.\r\n     */\r\n    event AdminChanged(address previousAdmin, address newAdmin);\r\n\r\n    /**\r\n     * @return The address of the proxy admin.\r\n     */\r\n    function admin() external returns (address);\r\n\r\n    /**\r\n     * @return The address of the implementation.\r\n     */\r\n    function implementation() external returns (address);\r\n\r\n    /**\r\n     * @dev Changes the admin of the proxy.\r\n     * Only the current admin can call this function.\r\n     * @param newAdmin Address to transfer proxy administration to.\r\n     */\r\n    function changeAdmin(address newAdmin) external;\r\n\r\n    /**\r\n     * @dev Upgrade the backing implementation of the proxy.\r\n     * Only the admin can call this function.\r\n     * @param newImplementation Address of the new implementation.\r\n     */\r\n    function upgradeTo(address newImplementation) external;\r\n\r\n    /**\r\n     * @dev Upgrade the backing implementation of the proxy and call a function\r\n     * on the new implementation.\r\n     * This is useful to initialize the proxied contract.\r\n     * @param newImplementation Address of the new implementation.\r\n     * @param data Data to send as msg.data in the low level call.\r\n     * It should include the signature and the parameters of the function to be called, as described in\r\n     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\r\n     */\r\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\r\n\r\n    /**\r\n     * @dev Emitted when the implementation is upgraded.\r\n     * @param implementation Address of the new implementation.\r\n     */\r\n    event Upgraded(address indexed implementation);\r\n}\r\n\r\n\r\n\r\n/**\r\n * @dev Interface of the openzeppeling ProxyAdmin\r\n */\r\ninterface IOZProxyAdmin {\r\n    /**\r\n     * @dev Returns the current implementation of a proxy.\r\n     * This is needed because only the proxy admin can query it.\r\n     * @return The address of the current implementation of the proxy.\r\n     */\r\n    function getProxyImplementation(IOZAdminUpgradeabilityProxy proxy)\r\n        external\r\n        view\r\n        returns (address);\r\n\r\n    /**\r\n     * @dev Returns the admin of a proxy. Only the admin can query it.\r\n     * @return The address of the current admin of the proxy.\r\n     */\r\n    function getProxyAdmin(IOZAdminUpgradeabilityProxy proxy) external view returns (address);\r\n\r\n    /**\r\n     * @dev Changes the admin of a proxy.\r\n     * @param proxy Proxy to change admin.\r\n     * @param newAdmin Address to transfer proxy administration to.\r\n     */\r\n    function changeProxyAdmin(IOZAdminUpgradeabilityProxy proxy, address newAdmin) external;\r\n\r\n    /**\r\n     * @dev Upgrades a proxy to the newest implementation of a contract.\r\n     * @param proxy Proxy to be upgraded.\r\n     * @param implementation the address of the Implementation.\r\n     */\r\n    function upgrade(IOZAdminUpgradeabilityProxy proxy, address implementation) external;\r\n\r\n    /**\r\n     * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it.\r\n     * This is useful to initialize the proxied contract.\r\n     * @param proxy Proxy to be upgraded.\r\n     * @param implementation Address of the Implementation.\r\n     * @param data Data to send as msg.data in the low level call.\r\n     * It should include the signature and the parameters of the function to be called, as described in\r\n     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\r\n     */\r\n    function upgradeAndCall(\r\n        IOZAdminUpgradeabilityProxy proxy,\r\n        address implementation,\r\n        bytes calldata data\r\n    ) external payable;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @return the address of the owner.\r\n     */\r\n    function owner() external view returns (address);\r\n\r\n    /**\r\n     * @return true if msg.sender is the owner of the contract.\r\n     */\r\n    function isOwner() external view returns (bool);\r\n\r\n    /**\r\n     * @dev Allows the current owner to relinquish control of the contract.\r\n     * @notice Renouncing to ownership will leave the contract without an owner.\r\n     * It will not be possible to call the functions with the `onlyOwner`\r\n     * modifier anymore.\r\n     */\r\n    function renounceOwnership() external;\r\n\r\n    /**\r\n     * @dev Allows the current owner to transfer control of the contract to a newOwner.\r\n     * @param newOwner The address to transfer ownership to.\r\n     */\r\n    function transferOwnership(address newOwner) external;\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n  @title ChangeContract\r\n  @notice This interface is the one used by the governance system.\r\n  @dev If you plan to do some changes to a system governed by this project you should write a contract\r\n  that does those changes, like a recipe. This contract MUST not have ANY kind of public or external function\r\n  that modifies the state of this ChangeContract, otherwise you could run into front-running issues when the governance\r\n  system is fully in place.\r\n */\r\ninterface ChangeContract {\r\n    /**\r\n      @notice Override this function with a recipe of the changes to be done when this ChangeContract\r\n      is executed\r\n     */\r\n    function execute() external;\r\n}\r\n\r\n\r\n/**\r\n  @title Governor\r\n  @notice Governor interface. This functions should be overwritten to\r\n  enable the comunnication with the rest of the system\r\n  */\r\ninterface IGovernor {\r\n    /**\r\n      @notice Function to be called to make the changes in changeContract\r\n      @dev This function should be protected somehow to only execute changes that\r\n      benefit the system. This decision process is independent of this architechture\r\n      therefore is independent of this interface too\r\n      @param changeContract Address of the contract that will execute the changes\r\n     */\r\n    function executeChange(ChangeContract changeContract) external;\r\n\r\n    /**\r\n      @notice Function to be called to make the changes in changeContract\r\n      @param _changer Address of the contract that will execute the changes\r\n     */\r\n    function isAuthorizedChanger(address _changer) external view returns (bool);\r\n}\r\n\r\n\r\n/**\r\n  @title Governed\r\n  @notice Base contract to be inherited by governed contracts\r\n  @dev This contract is not usable on its own since it does not have any _productive useful_ behaviour\r\n  The only purpose of this contract is to define some useful modifiers and functions to be used on the\r\n  governance aspect of the child contract\r\n  */\r\ncontract Governed {\r\n    /**\r\n      @notice The address of the contract which governs this one\r\n     */\r\n    IGovernor public governor;\r\n\r\n    string private constant NOT_AUTHORIZED_CHANGER = \"not_authorized_changer\";\r\n\r\n    /**\r\n      @notice Modifier that protects the function\r\n      @dev You should use this modifier in any function that should be called through\r\n      the governance system\r\n     */\r\n    modifier onlyAuthorizedChanger() {\r\n        require(governor.isAuthorizedChanger(msg.sender), NOT_AUTHORIZED_CHANGER);\r\n        _;\r\n    }\r\n\r\n    /**\r\n      @notice Initialize the contract with the basic settings\r\n      @dev This initialize replaces the constructor but it is not called automatically.\r\n      It is necessary because of the upgradeability of the contracts\r\n      @param _governor Governor address\r\n     */\r\n    function _initialize(IGovernor _governor) internal {\r\n        governor = _governor;\r\n    }\r\n\r\n    /**\r\n      @notice Change the contract's governor. Should be called through the old governance system\r\n      @param newIGovernor New governor address\r\n     */\r\n    function changeIGovernor(IGovernor newIGovernor) external onlyAuthorizedChanger {\r\n        governor = newIGovernor;\r\n    }\r\n\r\n    /**\r\n      @notice This method is used by a change contract to access the storage freely even without a setter.\r\n      @param data the serialized function arguments\r\n     */\r\n    function delegateCallToChanger(bytes calldata data)\r\n        external\r\n        onlyAuthorizedChanger\r\n        returns (bytes memory)\r\n    {\r\n        address changerContrat = msg.sender;\r\n        (bool success, bytes memory result) = changerContrat.delegatecall(\r\n            abi.encodeWithSignature(\"impersonate(bytes)\", data)\r\n        );\r\n        require(success, \"Error in delegate call\");\r\n        return result;\r\n    }\r\n\r\n    // Leave a gap betweeen inherited contracts variables in order to be\r\n    // able to add more variables in them later\r\n    uint256[50] private upgradeGap;\r\n}\r\n\r\n\r\n\r\n/**\r\n * @title Initializable\r\n *\r\n * @dev Helper contract to support initializer functions. To use it, replace\r\n * the constructor with a function that has the `initializer` modifier.\r\n * WARNING: Unlike constructors, initializer functions must be manually\r\n * invoked. This applies both to deploying an Initializable contract, as well\r\n * as extending an Initializable contract via inheritance.\r\n * WARNING: When used with inheritance, manual care must be taken to not invoke\r\n * a parent initializer twice, or ensure that all initializers are idempotent,\r\n * because this is not dealt with automatically as with constructors.\r\n */\r\ncontract Initializable {\r\n\r\n  /**\r\n   * @dev Indicates that the contract has been initialized.\r\n   */\r\n  bool private initialized;\r\n\r\n  /**\r\n   * @dev Indicates that the contract is in the process of being initialized.\r\n   */\r\n  bool private initializing;\r\n\r\n  /**\r\n   * @dev Modifier to use in the initializer function of a contract.\r\n   */\r\n  modifier initializer() {\r\n    require(initializing || isConstructor() || !initialized, \"Contract instance has already been initialized\");\r\n\r\n    bool isTopLevelCall = !initializing;\r\n    if (isTopLevelCall) {\r\n      initializing = true;\r\n      initialized = true;\r\n    }\r\n\r\n    _;\r\n\r\n    if (isTopLevelCall) {\r\n      initializing = false;\r\n    }\r\n  }\r\n\r\n  /// @dev Returns true if and only if the function is running in the constructor\r\n  function isConstructor() private view returns (bool) {\r\n    // extcodesize checks the size of the code stored in an address, and\r\n    // address returns the current address. Since the code is still not\r\n    // deployed when running a constructor, any checks on its code size will\r\n    // yield zero, making it an effective way to detect if a contract is\r\n    // under construction or not.\r\n    address self = address(this);\r\n    uint256 cs;\r\n    assembly { cs := extcodesize(self) }\r\n    return cs == 0;\r\n  }\r\n\r\n  // Reserved storage space to allow for layout changes in the future.\r\n  uint256[50] private ______gap;\r\n}\r\n\r\n\r\n/**\r\n  @title UpgradeDelegator\r\n  @notice Dispatches to the proxyAdmin any call made through the governance system\r\n  @dev Adapter between our governance system and the zeppelinOS proxyAdmin. This is\r\n  needed to be able to upgrade governance through the same system\r\n\r\n */\r\ncontract UpgradeDelegator is Initializable, Governed {\r\n    IOZProxyAdmin public proxyAdmin;\r\n\r\n    function initialize(IGovernor _governor, IOZProxyAdmin _proxyAdmin) public initializer {\r\n        Governed._initialize(_governor);\r\n        proxyAdmin = _proxyAdmin;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the current implementation of a proxy.\r\n     * This is needed because only the proxy admin can query it.\r\n     * @return The address of the current implementation of the proxy.\r\n     */\r\n    function getProxyImplementation(IOZAdminUpgradeabilityProxy proxy)\r\n        public\r\n        view\r\n        returns (address)\r\n    {\r\n        return proxyAdmin.getProxyImplementation(proxy);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the admin of a proxy. Only the admin can query it.\r\n     * @return The address of the current admin of the proxy.\r\n     */\r\n    function getProxyAdmin(IOZAdminUpgradeabilityProxy proxy) public view returns (address) {\r\n        return proxyAdmin.getProxyAdmin(proxy);\r\n    }\r\n\r\n    /**\r\n     * @dev Changes the admin of a proxy.\r\n     * @param proxy Proxy to change admin.\r\n     * @param newAdmin Address to transfer proxy administration to.\r\n     */\r\n    function changeProxyAdmin(IOZAdminUpgradeabilityProxy proxy, address newAdmin)\r\n        public\r\n        onlyAuthorizedChanger\r\n    {\r\n        proxyAdmin.changeProxyAdmin(proxy, newAdmin);\r\n    }\r\n\r\n    /**\r\n     * @dev Upgrades a proxy to the newest implementation of a contract.\r\n     * @param proxy Proxy to be upgraded.\r\n     * @param implementation the address of the Implementation.\r\n     */\r\n    function upgrade(IOZAdminUpgradeabilityProxy proxy, address implementation)\r\n        public\r\n        onlyAuthorizedChanger\r\n    {\r\n        proxyAdmin.upgrade(proxy, implementation);\r\n    }\r\n\r\n    /**\r\n     * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it.\r\n     * This is useful to initialize the proxied contract.\r\n     * @param proxy Proxy to be upgraded.\r\n     * @param implementation Address of the Implementation.\r\n     * @param data Data to send as msg.data in the low level call.\r\n     * It should include the signature and the parameters of the function to be called, as described in\r\n     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\r\n     */\r\n    function upgradeAndCall(\r\n        IOZAdminUpgradeabilityProxy proxy,\r\n        address implementation,\r\n        bytes memory data\r\n    ) public payable onlyAuthorizedChanger {\r\n        proxyAdmin.upgradeAndCall{value: msg.value}(proxy, implementation, data);\r\n    }\r\n}\r\n\r\n\n","deployed_bytecode":"0x6080604052600436106100915760003560e01c80639623609d116100595780639623609d1461018757806399a88ec414610246578063b6e0833014610281578063dc8990e1146102b4578063f3b7dead146103a657610091565b80630c340a2414610096578063204e1c7a146100c75780633e47158c146100fa578063485cc9551461010f5780637eff275e1461014c575b600080fd5b3480156100a257600080fd5b506100ab6103d9565b604080516001600160a01b039092168252519081900360200190f35b3480156100d357600080fd5b506100ab600480360360208110156100ea57600080fd5b50356001600160a01b03166103e8565b34801561010657600080fd5b506100ab61046b565b34801561011b57600080fd5b5061014a6004803603604081101561013257600080fd5b506001600160a01b038135811691602001351661047a565b005b34801561015857600080fd5b5061014a6004803603604081101561016f57600080fd5b506001600160a01b0381358116916020013516610542565b61014a6004803603606081101561019d57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184600183028401116401000000008311171561020557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106e2945050505050565b34801561025257600080fd5b5061014a6004803603604081101561026957600080fd5b506001600160a01b03813581169160200135166108b8565b34801561028d57600080fd5b5061014a600480360360208110156102a457600080fd5b50356001600160a01b03166109ff565b3480156102c057600080fd5b50610331600480360360208110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b509092509050610b12565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036b578181015183820152602001610353565b50505050905090810190601f1680156103985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b257600080fd5b506100ab600480360360208110156103c957600080fd5b50356001600160a01b0316610d66565b6033546001600160a01b031681565b606654604080516310270e3d60e11b81526001600160a01b0384811660048301529151600093929092169163204e1c7a91602480820192602092909190829003018186803b15801561043957600080fd5b505afa15801561044d573d6000803e3d6000fd5b505050506040513d602081101561046357600080fd5b505192915050565b6066546001600160a01b031681565b600054610100900460ff16806104935750610493610db7565b806104a1575060005460ff16155b6104dc5760405162461bcd60e51b815260040180806020018281038252602e815260200180610de0602e913960400191505060405180910390fd5b600054610100900460ff16158015610507576000805460ff1961ff0019909116610100171660011790555b61051083610dbd565b606680546001600160a01b0319166001600160a01b038416179055801561053d576000805461ff00191690555b505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d60208110156105b757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b60208201529061066f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561063457818101518382015260200161061c565b50505050905090810190601f1680156106615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060665460408051633f7f93af60e11b81526001600160a01b038581166004830152848116602483015291519190921691637eff275e91604480830192600092919082900301818387803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b505050505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561072d57600080fd5b505afa158015610741573d6000803e3d6000fd5b505050506040513d602081101561075757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b6020820152906107d25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50606654604051639623609d60e01b81526001600160a01b038581166004830190815285821660248401526060604484019081528551606485015285519290941693639623609d9334938993899389939192909160840190602085019080838360005b8381101561084d578181015183820152602001610835565b50505050905090810190601f16801561087a5780820380516001836020036101000a031916815260200191505b509450505050506000604051808303818588803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b5050505050505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d602081101561092d57600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b6020820152906109a85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b506066546040805163266a23b160e21b81526001600160a01b0385811660048301528481166024830152915191909216916399a88ec491604480830192600092919082900301818387803b1580156106c657600080fd5b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b158015610a4a57600080fd5b505afa158015610a5e573d6000803e3d6000fd5b505050506040513d6020811015610a7457600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b602082015290610aef5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50603380546001600160a01b0319166001600160a01b0392909216919091179055565b6033546040805163d994d6d560e01b815233600482015290516060926001600160a01b03169163d994d6d5916024808301926020929190829003018186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d6020811015610b8757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b602082015290610c025760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50600033905060006060826001600160a01b031686866040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166350b113e560e11b17815292518151919750955085945091925081905083835b60208310610ca85780518252601f199092019160209182019101610c89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610d08576040519150601f19603f3d011682016040523d82523d6000602084013e610d0d565b606091505b509150915081610d5d576040805162461bcd60e51b8152602060048201526016602482015275115c9c9bdc881a5b8819195b1959d85d194818d85b1b60521b604482015290519081900360640190fd5b95945050505050565b6066546040805163f3b7dead60e01b81526001600160a01b0384811660048301529151600093929092169163f3b7dead91602480820192602092909190829003018186803b15801561043957600080fd5b303b1590565b603380546001600160a01b0319166001600160a01b039290921691909117905556fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212203748e74f29a681e50508758ac5d3e270f7a067383282bf88c8455f9c25cab49a64736f6c634300060c0033","optimization_enabled":true,"verified_twin_address_hash":null,"is_verified":true,"compiler_settings":{"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"":["*"],"*":["*"]}}},"optimization_runs":200,"sourcify_repo_url":null,"decoded_constructor_args":null,"compiler_version":"v0.6.12+commit.27d51765","is_verified_via_verifier_alliance":false,"verified_at":"2021-05-14T16:28:31.776437Z","implementations":[],"proxy_type":null,"external_libraries":[],"creation_bytecode":"0x608060405234801561001057600080fd5b50610e43806100206000396000f3fe6080604052600436106100915760003560e01c80639623609d116100595780639623609d1461018757806399a88ec414610246578063b6e0833014610281578063dc8990e1146102b4578063f3b7dead146103a657610091565b80630c340a2414610096578063204e1c7a146100c75780633e47158c146100fa578063485cc9551461010f5780637eff275e1461014c575b600080fd5b3480156100a257600080fd5b506100ab6103d9565b604080516001600160a01b039092168252519081900360200190f35b3480156100d357600080fd5b506100ab600480360360208110156100ea57600080fd5b50356001600160a01b03166103e8565b34801561010657600080fd5b506100ab61046b565b34801561011b57600080fd5b5061014a6004803603604081101561013257600080fd5b506001600160a01b038135811691602001351661047a565b005b34801561015857600080fd5b5061014a6004803603604081101561016f57600080fd5b506001600160a01b0381358116916020013516610542565b61014a6004803603606081101561019d57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184600183028401116401000000008311171561020557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106e2945050505050565b34801561025257600080fd5b5061014a6004803603604081101561026957600080fd5b506001600160a01b03813581169160200135166108b8565b34801561028d57600080fd5b5061014a600480360360208110156102a457600080fd5b50356001600160a01b03166109ff565b3480156102c057600080fd5b50610331600480360360208110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b509092509050610b12565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036b578181015183820152602001610353565b50505050905090810190601f1680156103985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b257600080fd5b506100ab600480360360208110156103c957600080fd5b50356001600160a01b0316610d66565b6033546001600160a01b031681565b606654604080516310270e3d60e11b81526001600160a01b0384811660048301529151600093929092169163204e1c7a91602480820192602092909190829003018186803b15801561043957600080fd5b505afa15801561044d573d6000803e3d6000fd5b505050506040513d602081101561046357600080fd5b505192915050565b6066546001600160a01b031681565b600054610100900460ff16806104935750610493610db7565b806104a1575060005460ff16155b6104dc5760405162461bcd60e51b815260040180806020018281038252602e815260200180610de0602e913960400191505060405180910390fd5b600054610100900460ff16158015610507576000805460ff1961ff0019909116610100171660011790555b61051083610dbd565b606680546001600160a01b0319166001600160a01b038416179055801561053d576000805461ff00191690555b505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d60208110156105b757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b60208201529061066f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561063457818101518382015260200161061c565b50505050905090810190601f1680156106615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060665460408051633f7f93af60e11b81526001600160a01b038581166004830152848116602483015291519190921691637eff275e91604480830192600092919082900301818387803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b505050505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561072d57600080fd5b505afa158015610741573d6000803e3d6000fd5b505050506040513d602081101561075757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b6020820152906107d25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50606654604051639623609d60e01b81526001600160a01b038581166004830190815285821660248401526060604484019081528551606485015285519290941693639623609d9334938993899389939192909160840190602085019080838360005b8381101561084d578181015183820152602001610835565b50505050905090810190601f16801561087a5780820380516001836020036101000a031916815260200191505b509450505050506000604051808303818588803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b5050505050505050565b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d602081101561092d57600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b6020820152906109a85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b506066546040805163266a23b160e21b81526001600160a01b0385811660048301528481166024830152915191909216916399a88ec491604480830192600092919082900301818387803b1580156106c657600080fd5b6033546040805163d994d6d560e01b815233600482015290516001600160a01b039092169163d994d6d591602480820192602092909190829003018186803b158015610a4a57600080fd5b505afa158015610a5e573d6000803e3d6000fd5b505050506040513d6020811015610a7457600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b602082015290610aef5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50603380546001600160a01b0319166001600160a01b0392909216919091179055565b6033546040805163d994d6d560e01b815233600482015290516060926001600160a01b03169163d994d6d5916024808301926020929190829003018186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d6020811015610b8757600080fd5b50516040805180820190915260168152753737ba2fb0baba3437b934bd32b22fb1b430b733b2b960511b602082015290610c025760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561063457818101518382015260200161061c565b50600033905060006060826001600160a01b031686866040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166350b113e560e11b17815292518151919750955085945091925081905083835b60208310610ca85780518252601f199092019160209182019101610c89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610d08576040519150601f19603f3d011682016040523d82523d6000602084013e610d0d565b606091505b509150915081610d5d576040805162461bcd60e51b8152602060048201526016602482015275115c9c9bdc881a5b8819195b1959d85d194818d85b1b60521b604482015290519081900360640190fd5b95945050505050565b6066546040805163f3b7dead60e01b81526001600160a01b0384811660048301529151600093929092169163f3b7dead91602480820192602092909190829003018186803b15801561043957600080fd5b303b1590565b603380546001600160a01b0319166001600160a01b039290921691909117905556fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212203748e74f29a681e50508758ac5d3e270f7a067383282bf88c8455f9c25cab49a64736f6c634300060c0033","name":"UpgradeDelegator","is_blueprint":false,"license_type":"none","is_fully_verified":false,"is_verified_via_eth_bytecode_db":true,"language":"solidity","evm_version":"istanbul","can_be_visualized_via_sol2uml":true,"is_verified_via_sourcify":false,"additional_sources":[],"certified":false,"conflicting_implementations":null,"abi":[{"inputs":[{"internalType":"contract IGovernor","name":"newIGovernor","type":"address"}],"name":"changeIGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOZAdminUpgradeabilityProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateCallToChanger","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOZAdminUpgradeabilityProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IOZAdminUpgradeabilityProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"contract IGovernor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGovernor","name":"_governor","type":"address"},{"internalType":"contract IOZProxyAdmin","name":"_proxyAdmin","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyAdmin","outputs":[{"internalType":"contract IOZProxyAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IOZAdminUpgradeabilityProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOZAdminUpgradeabilityProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"is_changed_bytecode":false,"is_partially_verified":true,"constructor_args":null}