mirror of
https://github.com/Instadapp/dsa-governance.git
synced 2024-07-29 22:27:52 +00:00
1 line
63 KiB
JSON
1 line
63 KiB
JSON
{"metadata":"{\"defaultCompiler\":{\"version\":\"0.7.3\"},\"sources\":{\"contracts/payloads/IGP7/PayloadIGP7.sol\":{\"content\":\"pragma solidity ^0.7.0;\\npragma experimental ABIEncoderV2;\\n\\ninterface IGovernorBravo {\\n function _acceptAdmin() external;\\n function _setVotingDelay(uint newVotingDelay) external;\\n function _setVotingPeriod(uint newVotingPeriod) external;\\n function _acceptAdminOnTimelock() external;\\n function _setImplementation(address implementation_) external;\\n function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) external returns (uint);\\n function admin() external view returns(address);\\n function pendingAdmin() external view returns(address);\\n function timelock() external view returns(address);\\n function votingDelay() external view returns(uint256);\\n function votingPeriod() external view returns(uint256);\\n}\\n\\ninterface ITimelock {\\n function acceptAdmin() external;\\n function setDelay(uint delay_) external;\\n function setPendingAdmin(address pendingAdmin_) external;\\n function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external returns (bytes32);\\n function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external payable returns (bytes memory);\\n function pendingAdmin() external view returns(address);\\n function admin() external view returns(address);\\n function delay() external view returns(uint256);\\n}\\n\\ninterface IInstaIndex {\\n function changeMaster(address _newMaster) external;\\n function updateMaster() external;\\n function master() external view returns(address);\\n}\\n\\ninterface ILite {\\n function setAdmin(address newAdmin) external;\\n function getAdmin() external view returns(address);\\n}\\n\\ninterface IDSAV2 {\\n function cast(\\n string[] memory _targetNames,\\n bytes[] memory _datas,\\n address _origin\\n )\\n external\\n payable \\n returns (bytes32);\\n\\n function isAuth(address user) external view returns (bool);\\n}\\n\\ncontract PayloadIGP7 {\\n uint256 public constant PROPOSAL_ID = 7;\\n\\n address public constant PROPOSER = 0xA45f7bD6A5Ff45D31aaCE6bCD3d426D9328cea01;\\n\\n IGovernorBravo public constant GOVERNOR = IGovernorBravo(0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B);\\n ITimelock public constant OLD_TIMELOCK = ITimelock(0xC7Cb1dE2721BFC0E0DA1b9D526bCdC54eF1C0eFC);\\n ITimelock public immutable TIMELOCK;\\n address public immutable ADDRESS_THIS;\\n\\n IInstaIndex public constant INSTAINDEX = IInstaIndex(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723);\\n ILite public constant LITE = ILite(0xA0D3707c569ff8C87FA923d3823eC5D81c98Be78);\\n IDSAV2 public constant TREASURY = IDSAV2(0x28849D2b63fA8D361e5fc15cB8aBB13019884d09);\\n\\n uint256 public constant ONE_DAY_TIME_IN_SECONDS = 1 days; // 1 day in seconds. 86400s\\n uint256 public constant ONE_DAY_TIME_IN_BLOCKS = 7_200; // 1 day in blocks. 12s per block\\n uint256 public constant TWO_DAY_TIME_IN_BLOCKS = 14_400; // 2 day in blocks. 12s per block\\n\\n address public immutable GOVERNOR_IMPLEMENTATION_ADDRESS;\\n address public constant TEAM_MULTISIG = 0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e;\\n\\n constructor (address governor_, address timelock_) {\\n TIMELOCK = ITimelock(address(timelock_)); \\n GOVERNOR_IMPLEMENTATION_ADDRESS = address(governor_);\\n ADDRESS_THIS = address(this);\\n }\\n\\n\\n function propose(string memory description) external {\\n require(msg.sender == PROPOSER, \\\"msg.sender-not-proposer\\\");\\n\\n uint256 totalActions = 8;\\n address[] memory targets = new address[](totalActions);\\n uint256[] memory values = new uint256[](totalActions);\\n string[] memory signatures = new string[](totalActions);\\n bytes[] memory calldatas = new bytes[](totalActions);\\n\\n // Action 1: call cast() - transfer rewards to Team Multisig, add new Timelock as auth & remove old Timelock as auth on Treasury\\n (targets[0], values[0], signatures[0], calldatas[0]) = action1();\\n\\n // Action 2: call _setImplementation() - upgrade governor contract to new implementation\\n (targets[1], values[1], signatures[1], calldatas[1]) = action2();\\n\\n // Action 3: call changeMaster() - change ownership of DSA to new timelock contract\\n (targets[2], values[2], signatures[2], calldatas[2]) = action3();\\n\\n // Action 4: call setAdmin() - change ownership of Lite to new timelock contract\\n (targets[3], values[3], signatures[3], calldatas[3]) = action4();\\n\\n // Action 5: call _setPendingAdmin() - on governor contract with new timelock address\\n (targets[4], values[4], signatures[4], calldatas[4]) = action5();\\n\\n // Action 6: call setPendingAdmin() - on old timelock to change team multisig\\n (targets[5], values[5], signatures[5], calldatas[5]) = action6();\\n\\n // Action 7: call queueTransaction - new timelock contract to queue below payload\\n (targets[6], values[6], signatures[6], calldatas[6]) = action7();\\n\\n // Action 8: call executeTransaction - new timelock contract to execute below payload\\n (targets[7], values[7], signatures[7], calldatas[7]) = action8();\\n\\n uint256 proposedId = GOVERNOR.propose(\\n targets,\\n values,\\n signatures,\\n calldatas,\\n description\\n );\\n\\n require(proposedId == PROPOSAL_ID, \\\"PROPOSAL_IS_NOT_SAME\\\");\\n }\\n\\n function execute() external {\\n // Action 1: updateMaster() function on DSA instaIndex\\n INSTAINDEX.updateMaster();\\n\\n // Action 2: _acceptAdmin() function on governor contract\\n GOVERNOR._acceptAdmin();\\n\\n // Action 3: _setVotingDelay() function on governor contract with 1 days\\n GOVERNOR._setVotingDelay(ONE_DAY_TIME_IN_BLOCKS);\\n\\n // Action 4: _setVotingPeriod() function on governor contract with 2 days\\n GOVERNOR._setVotingPeriod(TWO_DAY_TIME_IN_BLOCKS);\\n\\n // Action 5: setPendingAdmin() on new timelock contract\\n TIMELOCK.setPendingAdmin(address(GOVERNOR));\\n\\n // Action 6: _acceptAdminOnTimelock() on governor contract\\n GOVERNOR._acceptAdminOnTimelock();\\n\\n // Action 7: setDelay() on new timelock contract with 1 day\\n TIMELOCK.setDelay(ONE_DAY_TIME_IN_SECONDS);\\n\\n // Action 8: call verifyProposal() - on this payload contract to verify proposal execution\\n PayloadIGP7(ADDRESS_THIS).verifyProposal();\\n }\\n\\n function verifyProposal() external view {\\n // Verify 1 : Verify DSA Master\\n require(INSTAINDEX.master() == address(TIMELOCK), \\\"InstaIndex-wrong-master\\\");\\n\\n // Verify 2 : Verify Lite Admin\\n require(LITE.getAdmin() == address(TIMELOCK), \\\"Lite-wrong-admin\\\");\\n\\n // Verify 3 : Verify Governor Admin\\n require(GOVERNOR.admin() == address(TIMELOCK), \\\"Governor-wrong-admin\\\");\\n\\n // Verify 4 : Verify Governor Timelock\\n require(GOVERNOR.timelock() == address(TIMELOCK), \\\"Governor-wrong-timelock\\\");\\n\\n // Verify 5 : Verify Governor Pending Admin\\n require(GOVERNOR.pendingAdmin() == address(0), \\\"Governor-wrong-timelock\\\");\\n\\n // Verify 6 : Verify Old Timelock Admin\\n require(OLD_TIMELOCK.admin() == address(GOVERNOR), \\\"Old-timelock-wrong-admin\\\");\\n\\n // Verify 7 : Verify Old Timelock Pending Admin\\n require(OLD_TIMELOCK.pendingAdmin() == address(TEAM_MULTISIG), \\\"Old-timelock-wrong-pending-admin\\\");\\n\\n // Verify 8 : Verify New Timelock Admin\\n require(TIMELOCK.admin() == address(GOVERNOR), \\\"Timelock-wrong-admin\\\");\\n\\n // Verify 9 : Verify Timelock Pending Admin\\n require(TIMELOCK.pendingAdmin() == address(0), \\\"Old-timelock-wrong-pending-admin\\\");\\n\\n // Verify 10 : Verify Treasury remove of old timelock\\n require(TREASURY.isAuth(address(OLD_TIMELOCK)) == false, \\\"Treasury-old-timelock-not-removed\\\");\\n\\n // Verify 11: Verify Treasury add of new timelock\\n require(TREASURY.isAuth(address(TIMELOCK)) == true, \\\"Treasury-new-timelock-not-added\\\");\\n\\n // Verify 12: Verify voting delay\\n require(GOVERNOR.votingDelay() == ONE_DAY_TIME_IN_BLOCKS, \\\"Voting-delay-not-set-to-one-day\\\");\\n\\n // Verify 13: Verify voting period\\n require(GOVERNOR.votingPeriod() == TWO_DAY_TIME_IN_BLOCKS, \\\"Voting-period-not-set-to-two-day\\\");\\n\\n // Verify 14: Verify queueing period\\n require(TIMELOCK.delay() == ONE_DAY_TIME_IN_SECONDS, \\\"Timelock-delay-not-set-to-one-day\\\");\\n }\\n\\n ///////// PROPOSAL ACTIONS - 8 Actions ///////\\n\\n /// @notice Action 1: call cast() - transfer rewards to Team Multisig, add new Timelock as auth & remove old Timelock as auth on Treasury\\n function action1() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n string[] memory targets = new string[](7);\\n bytes[] memory encodedSpells = new bytes[](7);\\n\\n string memory withdrawSignature = \\\"withdraw(address,uint256,address,uint256,uint256)\\\";\\n\\n // Spell 1: Transfer wETH\\n {\\n address ETH_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\\n uint256 ETH_AMOUNT = 230 * 1e18; // 230 ETH\\n targets[0] = \\\"BASIC-A\\\";\\n encodedSpells[0] = abi.encodeWithSignature(withdrawSignature, ETH_ADDRESS, ETH_AMOUNT, TEAM_MULTISIG, 0, 0);\\n }\\n\\n // Spell 2: Transfer USDC\\n { \\n address USDC_ADDRESS = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;\\n uint256 USDC_AMOUNT = 247_900 * 1e6; // 247.9k USDC\\n targets[1] = \\\"BASIC-A\\\";\\n encodedSpells[1] = abi.encodeWithSignature(withdrawSignature, USDC_ADDRESS, USDC_AMOUNT, TEAM_MULTISIG, 0, 0);\\n }\\n\\n // Spell 3: Transfer DAI\\n { \\n address DAI_ADDRESS = 0x6B175474E89094C44Da98b954EedeAC495271d0F;\\n uint256 DAI_AMOUNT = 59_000 * 1e18; // 59k DAI\\n targets[2] = \\\"BASIC-A\\\";\\n encodedSpells[2] = abi.encodeWithSignature(withdrawSignature, DAI_ADDRESS, DAI_AMOUNT, TEAM_MULTISIG, 0, 0);\\n }\\n\\n // Spell 4: Transfer USDT\\n { \\n address USDT_ADDRESS = 0xdAC17F958D2ee523a2206206994597C13D831ec7;\\n uint256 USDT_AMOUNT = 28_700 * 1e6; // 28.8k USDT\\n targets[3] = \\\"BASIC-A\\\";\\n encodedSpells[3] = abi.encodeWithSignature(withdrawSignature, USDT_ADDRESS, USDT_AMOUNT, TEAM_MULTISIG, 0, 0);\\n }\\n\\n // Spell 5: Transfer stETH\\n { \\n address STETH_ADDRESS = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;\\n uint256 STETH_AMOUNT = 320 * 1e18; // 320 stETH\\n targets[4] = \\\"BASIC-A\\\";\\n encodedSpells[4] = abi.encodeWithSignature(withdrawSignature, STETH_ADDRESS, STETH_AMOUNT, TEAM_MULTISIG, 0, 0);\\n }\\n\\n // Spell 6: Add new Timelock as auth\\n {\\n targets[5] = \\\"AUTHORITY-A\\\";\\n encodedSpells[5] = abi.encodeWithSignature(\\\"add(address)\\\", address(TIMELOCK));\\n }\\n\\n // Spell 7: Remove old Timelock as auth\\n {\\n targets[6] = \\\"AUTHORITY-A\\\";\\n encodedSpells[6] = abi.encodeWithSignature(\\\"remove(address)\\\", address(OLD_TIMELOCK));\\n }\\n\\n target = address(TREASURY);\\n value = 0;\\n signature = \\\"cast(string[],bytes[],address)\\\";\\n calldatas = abi.encode(targets, encodedSpells, address(this));\\n }\\n\\n /// @notice Action 2: call _setImplementation() - upgrade governor contract to new implementation\\n function action2() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(GOVERNOR);\\n value = 0;\\n signature = \\\"_setImplementation(address)\\\";\\n calldatas = abi.encode(GOVERNOR_IMPLEMENTATION_ADDRESS);\\n }\\n\\n /// @notice Action 3: call changeMaster() - change ownership of DSA to new timelock contract\\n function action3() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(INSTAINDEX);\\n value = 0;\\n signature = \\\"changeMaster(address)\\\";\\n calldatas = abi.encode(TIMELOCK);\\n }\\n\\n /// @notice Action 4: call setAdmin() - change ownership of Lite to new timelock contract\\n function action4() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(LITE);\\n value = 0;\\n signature = \\\"setAdmin(address)\\\";\\n calldatas = abi.encode(TIMELOCK);\\n }\\n\\n /// @notice Action 5: call _setPendingAdmin() - on governor contract with new timelock address\\n function action5() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(GOVERNOR);\\n value = 0;\\n signature = \\\"_setPendingAdmin(address)\\\";\\n calldatas = abi.encode(TIMELOCK);\\n }\\n\\n /// @notice Action 6: call setPendingAdmin() - on old timelock to change team multisig\\n function action6() public pure returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(OLD_TIMELOCK);\\n value = 0;\\n signature = \\\"setPendingAdmin(address)\\\";\\n calldatas = abi.encode(TEAM_MULTISIG);\\n }\\n\\n /// @notice Action 7: call queueTransaction - new timelock contract to queue below payload\\n function action7() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(TIMELOCK);\\n value = 0;\\n signature = \\\"queueTransaction(address,uint256,string,bytes,uint256)\\\";\\n calldatas = abi.encode(\\n TIMELOCK,\\n 0,\\n \\\"executePayload(address,string,bytes)\\\",\\n abi.encode(\\n address(this),\\n \\\"execute()\\\",\\n abi.encode()\\n ),\\n block.timestamp\\n );\\n }\\n\\n /// @notice Action 8: call executeTransaction - new timelock contract to execute below payload\\n function action8() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {\\n target = address(TIMELOCK);\\n value = 0;\\n signature = \\\"executeTransaction(address,uint256,string,bytes,uint256)\\\";\\n calldatas = abi.encode(\\n TIMELOCK,\\n 0,\\n \\\"executePayload(address,string,bytes)\\\",\\n abi.encode(\\n address(this),\\n \\\"execute()\\\",\\n abi.encode()\\n ),\\n block.timestamp\\n );\\n }\\n}\",\"versionPragma\":\"^0.7.0\"}}}","address":"0x4dCFDeB60Da14eeF91a4D462013c79524E62F9b4","bytecode":"0x60e06040523480156200001157600080fd5b5060405162002b8938038062002b89833981016040819052620000349162000079565b6001600160601b0319606091821b811660805291811b90911660c05230901b60a052620000b0565b80516001600160a01b03811681146200007457600080fd5b919050565b600080604083850312156200008c578182fd5b62000097836200005c565b9150620000a7602084016200005c565b90509250929050565b60805160601c60a05160601c60c05160601c612a3f6200014a60003980610b655280610ccf52508061100f52806121b45250806102f1528061037e52806109205280610ac25280610b145280610bdd5280610eb45280610fa15280611082528061116052806112355280611304528061162752806116e952806118855280611a625280611b485280611b725280611bc45250612a3f6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806361461954116100de5780637aadef8b11610097578063b788f3a111610071578063b788f3a114610260578063bffa7f0f14610268578063cc025f7c14610270578063def652741461027857610173565b80637aadef8b1461023d5780639389b5be14610245578063aa98df391461024d57610173565b8063614619541461020b57806366760d7d146102155780636851821c1461021d5780636d5c3476146102255780636dc0ae221461022d5780637a63e7dd1461023557610173565b8063330e849b11610130578063330e849b146101db57806339ac3f14146101e35780633b909ae0146101eb57806347ee2df1146101f35780634cb2a2d3146101fb578063522106391461020357610173565b80630680f417146101785780630bc9136e146101965780631806bd0a146101ab5780631b4671e4146101c35780632d2c5565146101cb5780632f8be602146101d3575b600080fd5b610180610280565b60405161018d91906123f9565b60405180910390f35b61019e610298565b60405161018d9190612915565b6101b361029d565b60405161018d949392919061248c565b6101b361032e565b6101806103a4565b6101b36103bc565b6101b3610aba565b610180610b63565b6101b3610b87565b6101b3610c03565b6101b3610c79565b610180610cf5565b610213610d0d565b005b610213611080565b61019e611b10565b61019e611b16565b610180611b1c565b610180611b2e565b610180611b46565b6101b3611b6a565b61021361025b36600461222b565b611bf2565b610180612182565b61018061219a565b6101806121b2565b61019e6121d6565b73a0d3707c569ff8c87fa923d3823ec5d81c98be7881565b600781565b60408051808201825260158152746368616e67654d617374657228616464726573732960581b6020808301919091529151732971adfa57b20e5a416ae5a708a8655a9c74f7239260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b604051602081830303815290604052905090919293565b604080518082018252601181527073657441646d696e28616464726573732960781b602080830191909152915173a0d3707c569ff8c87fa923d3823ec5d81c98be789260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b7328849d2b63fa8d361e5fc15cb8abb13019884d0981565b6040805160078082526101008201909252600091829160609182918291816020015b60608152602001906001900390816103de575050604080516007808252610100820190925291925060609190602082015b606081526020019060019003908161040f57905050905060606040518060600160405280603181526020016129b9603191399050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290506000680c77e4256863d8000090506040518060400160405280600781526020016642415349432d4160c81b8152508560008151811061049757fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016104d1959493929190612456565b60408051601f1981840301815290829052916104ec916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b0383818316178352505050508460008151811061052457fe5b60200260200101819052505050600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48905060006439b7fdcf0090506040518060400160405280600781526020016642415349432d4160c81b8152508560018151811061058157fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016105bb959493929190612456565b60408051601f1981840301815290829052916105d6916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b0383818316178352505050508460018151811061060e57fe5b602002602001018190525050506000736b175474e89094c44da98b954eedeac495271d0f90506000690c7e657b0c9a4ee0000090506040518060400160405280600781526020016642415349432d4160c81b8152508560028151811061067057fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016106aa959493929190612456565b60408051601f1981840301815290829052916106c5916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846002815181106106fd57fe5b60200260200101819052505050600073dac17f958d2ee523a2206206994597c13d831ec7905060006406aea73f0090506040518060400160405280600781526020016642415349432d4160c81b8152508560038151811061075a57fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e600080604051602401610794959493929190612456565b60408051601f1981840301815290829052916107af916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846003815181106107e757fe5b60200260200101819052505050600073ae7ab96520de3a18e5e111b5eaab095312d7fe8490506000681158e460913d00000090506040518060400160405280600781526020016642415349432d4160c81b8152508560048151811061084857fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e600080604051602401610882959493929190612456565b60408051601f19818403018152908290529161089d916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846004815181106108d557fe5b602002602001018190525050506040518060400160405280600b81526020016a415554484f524954592d4160a81b8152508360058151811061091357fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000060405160240161094f91906123f9565b60408051601f198184030181529190526020810180516001600160e01b0316630a3b0a4f60e01b17905282518390600590811061098857fe5b60200260200101819052506040518060400160405280600b81526020016a415554484f524954592d4160a81b815250836006815181106109c457fe5b602002602001018190525073c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6040516024016109f491906123f9565b60408051601f198184030181529190526020810180516001600160e01b0316631484968760e11b179052825183906006908110610a2d57fe5b60200260200101819052507328849d2b63fa8d361e5fc15cb8abb13019884d099650600095506040518060400160405280601e81526020017f6361737428737472696e675b5d2c62797465735b5d2c616464726573732900008152509450828230604051602001610aa09392919061256f565b604051602081830303815290604052935050505090919293565b6000806060807f0000000000000000000000000000000000000000000000000000000000000000935060009250604051806060016040528060368152602001612983603691396040805160008082526020820183529294507f00000000000000000000000000000000000000000000000000000000000000009291610b42913091810161240d565b60408051601f198184030181529082905261031793929142906020016125ad565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080518082018252601981527f5f73657450656e64696e6741646d696e2861646472657373290000000000000060208083019190915291516000805160206129ea8339815191529260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b604080518082018252601881527f73657450656e64696e6741646d696e2861646472657373290000000000000000602080830191909152915173c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc926000929160609161031791734f6f977acdd1177dcd81ab83074855ecb9c2d49e91016123f9565b604080518082018252601b81527f5f736574496d706c656d656e746174696f6e286164647265737329000000000060208083019190915291516000805160206129ea8339815191529260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b732971adfa57b20e5a416ae5a708a8655a9c74f72381565b732971adfa57b20e5a416ae5a708a8655a9c74f7236001600160a01b031663cf1a0ddc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050506000805160206129ea8339815191526001600160a01b031663e9c714f26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b5050604051630efd8dad60e11b81526000805160206129ea8339815191529250631dfb1b5a9150610e0890611c2090600401612915565b600060405180830381600087803b158015610e2257600080fd5b505af1158015610e36573d6000803e3d6000fd5b50506040516303a8b66360e21b81526000805160206129ea8339815191529250630ea2d98c9150610e6d9061384090600401612915565b600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b5050604051634dd18bf560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634dd18bf59150610ef9906000805160206129ea833981519152906004016123f9565b600060405180830381600087803b158015610f1357600080fd5b505af1158015610f27573d6000803e3d6000fd5b505050506000805160206129ea8339815191526001600160a01b031663c59fdd686040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f7457600080fd5b505af1158015610f88573d6000803e3d6000fd5b50506040516370bb923760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063e177246e9150610fdb906201518090600401612915565b600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366760d7d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561106657600080fd5b505afa15801561107a573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316732971adfa57b20e5a416ae5a708a8655a9c74f7236001600160a01b031663ee97f7f36040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f757600080fd5b505afa15801561110b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112f91906121dd565b6001600160a01b03161461115e5760405162461bcd60e51b81526004016111559061262b565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673a0d3707c569ff8c87fa923d3823ec5d81c98be786001600160a01b0316636e9960c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906121dd565b6001600160a01b0316146112335760405162461bcd60e51b815260040161115590612780565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000805160206129ea8339815191526001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a457600080fd5b505afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc91906121dd565b6001600160a01b0316146113025760405162461bcd60e51b81526004016111559061280f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000805160206129ea8339815191526001600160a01b031663d33219b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561137357600080fd5b505afa158015611387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ab91906121dd565b6001600160a01b0316146113d15760405162461bcd60e51b8152600401611155906128de565b60006001600160a01b03166000805160206129ea8339815191526001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b15801561142357600080fd5b505afa158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b91906121dd565b6001600160a01b0316146114815760405162461bcd60e51b8152600401611155906128de565b6000805160206129ea8339815191526001600160a01b031673c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e91906121dd565b6001600160a01b0316146115445760405162461bcd60e51b8152600401611155906127d8565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e6001600160a01b031673c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b1580156115af57600080fd5b505afa1580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e791906121dd565b6001600160a01b03161461160d5760405162461bcd60e51b815260040161115590612874565b6000805160206129ea8339815191526001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561167e57600080fd5b505afa158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b691906121dd565b6001600160a01b0316146116dc5760405162461bcd60e51b815260040161115590612662565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b15801561174057600080fd5b505afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177891906121dd565b6001600160a01b03161461179e5760405162461bcd60e51b815260040161115590612874565b604051632520e7ff60e01b81527328849d2b63fa8d361e5fc15cb8abb13019884d0990632520e7ff906117e99073c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc906004016123f9565b60206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611839919061220b565b156118565760405162461bcd60e51b81526004016111559061273f565b604051632520e7ff60e01b81527328849d2b63fa8d361e5fc15cb8abb13019884d0990632520e7ff906118ad907f0000000000000000000000000000000000000000000000000000000000000000906004016123f9565b60206040518083038186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd919061220b565b151560011461191e5760405162461bcd60e51b815260040161115590612708565b611c206000805160206129ea8339815191526001600160a01b0316633932abb16040518163ffffffff1660e01b815260040160206040518083038186803b15801561196857600080fd5b505afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a091906122c0565b146119bd5760405162461bcd60e51b81526004016111559061283d565b6138406000805160206129ea8339815191526001600160a01b03166302a251a36040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f91906122c0565b14611a5c5760405162461bcd60e51b8152600401611155906128a9565b620151807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906122c0565b14611b0e5760405162461bcd60e51b815260040161115590612690565b565b611c2081565b61384081565b6000805160206129ea83398151915281565b73c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc81565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060807f000000000000000000000000000000000000000000000000000000000000000093506000925060405180606001604052806038815260200161294b603891396040805160008082526020820183529294507f00000000000000000000000000000000000000000000000000000000000000009291610b42913091810161240d565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea0114611c255760405162461bcd60e51b8152600401611155906126d1565b604080516008808252610120820190925260609082602082016101008036833701905050905060608267ffffffffffffffff81118015611c6457600080fd5b50604051908082528060200260200182016040528015611c8e578160200160208202803683370190505b50905060608367ffffffffffffffff81118015611caa57600080fd5b50604051908082528060200260200182016040528015611cde57816020015b6060815260200190600190039081611cc95790505b50905060608467ffffffffffffffff81118015611cfa57600080fd5b50604051908082528060200260200182016040528015611d2e57816020015b6060815260200190600190039081611d195790505b509050611d396103bc565b87600081518110611d4657fe5b6020026020010187600081518110611d5a57fe5b6020026020010187600081518110611d6e57fe5b6020026020010187600081518110611d8257fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611dac610c79565b87600181518110611db957fe5b6020026020010187600181518110611dcd57fe5b6020026020010187600181518110611de157fe5b6020026020010187600181518110611df557fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611e1f61029d565b87600281518110611e2c57fe5b6020026020010187600281518110611e4057fe5b6020026020010187600281518110611e5457fe5b6020026020010187600281518110611e6857fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611e9261032e565b87600381518110611e9f57fe5b6020026020010187600381518110611eb357fe5b6020026020010187600381518110611ec757fe5b6020026020010187600381518110611edb57fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611f05610b87565b87600481518110611f1257fe5b6020026020010187600481518110611f2657fe5b6020026020010187600481518110611f3a57fe5b6020026020010187600481518110611f4e57fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611f78610c03565b87600581518110611f8557fe5b6020026020010187600581518110611f9957fe5b6020026020010187600581518110611fad57fe5b6020026020010187600581518110611fc157fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611feb610aba565b87600681518110611ff857fe5b602002602001018760068151811061200c57fe5b602002602001018760068151811061202057fe5b602002602001018760068151811061203457fe5b6020908102919091010193909352929091529190526001600160a01b03909116905261205e611b6a565b8760078151811061206b57fe5b602002602001018760078151811061207f57fe5b602002602001018760078151811061209357fe5b60200260200101876007815181106120a757fe5b6020908102919091010193909352929091529190526001600160a01b039091169052604051636d4ab48d60e11b81526000906000805160206129ea8339815191529063da95691a906121059088908890889088908e906004016124d0565b602060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215791906122c0565b9050600781146121795760405162461bcd60e51b8152600401611155906127aa565b50505050505050565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e81565b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b7f000000000000000000000000000000000000000000000000000000000000000081565b6201518081565b6000602082840312156121ee578081fd5b81516001600160a01b0381168114612204578182fd5b9392505050565b60006020828403121561221c578081fd5b81518015158114612204578182fd5b6000602080838503121561223d578182fd5b823567ffffffffffffffff80821115612254578384fd5b818501915085601f830112612267578384fd5b81358181111561227357fe5b604051601f8201601f191681018501838111828210171561229057fe5b60405281815283820185018810156122a6578586fd5b818585018683013790810190930193909352509392505050565b6000602082840312156122d1578081fd5b5051919050565b60008282518085526020808601955080818302840101818601855b8481101561232157601f1986840301895261230f8383516123b1565b988401989250908301906001016122f3565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b8481101561232157601f198684030189526123658383516123b1565b98840198925090830190600101612349565b6000815180845260208085019450808401835b838110156123a65781518752958201959082019060010161238a565b509495945050505050565b600081518084526123c981602086016020860161291e565b601f01601f19169290920160200192915050565b600082516123ef81846020870161291e565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a0604083015261244e60a08301846123b1565b949350505050565b6001600160a01b039586168152602081019490945291909316604083015260ff9283166060830152909116608082015260a00190565b600060018060a01b0386168252846020830152608060408301526124b360808301856123b1565b82810360608401526124c581856123b1565b979650505050505050565b60a0808252865190820181905260009060209060c0840190828a01845b828110156125125781516001600160a01b0316845292840192908401906001016124ed565b505050838103828501526125268189612377565b915050828103604084015261253b818761232e565b9050828103606084015261254f81866122d8565b9050828103608084015261256381856123b1565b98975050505050505050565b600060608252612582606083018661232e565b828103602084015261259481866122d8565b91505060018060a01b0383166040830152949350505050565b600060018060a01b038616825260ff8516602083015260a06040830152602460a08301527f657865637574655061796c6f616428616464726573732c737472696e672c627960c0830152637465732960e01b60e0830152610100806060840152612619818401866123b1565b91505082608083015295945050505050565b60208082526017908201527f496e737461496e6465782d77726f6e672d6d6173746572000000000000000000604082015260600190565b6020808252601490820152732a34b6b2b637b1b596bbb937b73396b0b236b4b760611b604082015260600190565b60208082526021908201527f54696d656c6f636b2d64656c61792d6e6f742d7365742d746f2d6f6e652d64616040820152607960f81b606082015260800190565b60208082526017908201527f6d73672e73656e6465722d6e6f742d70726f706f736572000000000000000000604082015260600190565b6020808252601f908201527f54726561737572792d6e65772d74696d656c6f636b2d6e6f742d616464656400604082015260600190565b60208082526021908201527f54726561737572792d6f6c642d74696d656c6f636b2d6e6f742d72656d6f76656040820152601960fa1b606082015260800190565b60208082526010908201526f2634ba3296bbb937b73396b0b236b4b760811b604082015260600190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b604082015260600190565b60208082526018908201527f4f6c642d74696d656c6f636b2d77726f6e672d61646d696e0000000000000000604082015260600190565b60208082526014908201527323b7bb32b93737b916bbb937b73396b0b236b4b760611b604082015260600190565b6020808252601f908201527f566f74696e672d64656c61792d6e6f742d7365742d746f2d6f6e652d64617900604082015260600190565b6020808252818101527f4f6c642d74696d656c6f636b2d77726f6e672d70656e64696e672d61646d696e604082015260600190565b6020808252818101527f566f74696e672d706572696f642d6e6f742d7365742d746f2d74776f2d646179604082015260600190565b60208082526017908201527f476f7665726e6f722d77726f6e672d74696d656c6f636b000000000000000000604082015260600190565b90815260200190565b60005b83811015612939578181015183820152602001612921565b8381111561107a575050600091015256fe657865637574655472616e73616374696f6e28616464726573732c75696e743235362c737472696e672c62797465732c75696e743235362971756575655472616e73616374696f6e28616464726573732c75696e743235362c737472696e672c62797465732c75696e7432353629776974686472617728616464726573732c75696e743235362c616464726573732c75696e743235362c75696e74323536290000000000000000000000000204cd037b2ec03605cfdfe482d8e257c765fa1ba2646970667358221220fd4b4b0956db73436ef7d6d3b9ea407c8d7614dd092f1660cc2547735ab0357164736f6c63430007030033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101735760003560e01c806361461954116100de5780637aadef8b11610097578063b788f3a111610071578063b788f3a114610260578063bffa7f0f14610268578063cc025f7c14610270578063def652741461027857610173565b80637aadef8b1461023d5780639389b5be14610245578063aa98df391461024d57610173565b8063614619541461020b57806366760d7d146102155780636851821c1461021d5780636d5c3476146102255780636dc0ae221461022d5780637a63e7dd1461023557610173565b8063330e849b11610130578063330e849b146101db57806339ac3f14146101e35780633b909ae0146101eb57806347ee2df1146101f35780634cb2a2d3146101fb578063522106391461020357610173565b80630680f417146101785780630bc9136e146101965780631806bd0a146101ab5780631b4671e4146101c35780632d2c5565146101cb5780632f8be602146101d3575b600080fd5b610180610280565b60405161018d91906123f9565b60405180910390f35b61019e610298565b60405161018d9190612915565b6101b361029d565b60405161018d949392919061248c565b6101b361032e565b6101806103a4565b6101b36103bc565b6101b3610aba565b610180610b63565b6101b3610b87565b6101b3610c03565b6101b3610c79565b610180610cf5565b610213610d0d565b005b610213611080565b61019e611b10565b61019e611b16565b610180611b1c565b610180611b2e565b610180611b46565b6101b3611b6a565b61021361025b36600461222b565b611bf2565b610180612182565b61018061219a565b6101806121b2565b61019e6121d6565b73a0d3707c569ff8c87fa923d3823ec5d81c98be7881565b600781565b60408051808201825260158152746368616e67654d617374657228616464726573732960581b6020808301919091529151732971adfa57b20e5a416ae5a708a8655a9c74f7239260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b604051602081830303815290604052905090919293565b604080518082018252601181527073657441646d696e28616464726573732960781b602080830191909152915173a0d3707c569ff8c87fa923d3823ec5d81c98be789260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b7328849d2b63fa8d361e5fc15cb8abb13019884d0981565b6040805160078082526101008201909252600091829160609182918291816020015b60608152602001906001900390816103de575050604080516007808252610100820190925291925060609190602082015b606081526020019060019003908161040f57905050905060606040518060600160405280603181526020016129b9603191399050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290506000680c77e4256863d8000090506040518060400160405280600781526020016642415349432d4160c81b8152508560008151811061049757fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016104d1959493929190612456565b60408051601f1981840301815290829052916104ec916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b0383818316178352505050508460008151811061052457fe5b60200260200101819052505050600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48905060006439b7fdcf0090506040518060400160405280600781526020016642415349432d4160c81b8152508560018151811061058157fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016105bb959493929190612456565b60408051601f1981840301815290829052916105d6916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b0383818316178352505050508460018151811061060e57fe5b602002602001018190525050506000736b175474e89094c44da98b954eedeac495271d0f90506000690c7e657b0c9a4ee0000090506040518060400160405280600781526020016642415349432d4160c81b8152508560028151811061067057fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e6000806040516024016106aa959493929190612456565b60408051601f1981840301815290829052916106c5916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846002815181106106fd57fe5b60200260200101819052505050600073dac17f958d2ee523a2206206994597c13d831ec7905060006406aea73f0090506040518060400160405280600781526020016642415349432d4160c81b8152508560038151811061075a57fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e600080604051602401610794959493929190612456565b60408051601f1981840301815290829052916107af916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846003815181106107e757fe5b60200260200101819052505050600073ae7ab96520de3a18e5e111b5eaab095312d7fe8490506000681158e460913d00000090506040518060400160405280600781526020016642415349432d4160c81b8152508560048151811061084857fe5b6020026020010181905250828282734f6f977acdd1177dcd81ab83074855ecb9c2d49e600080604051602401610882959493929190612456565b60408051601f19818403018152908290529161089d916123dd565b60405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050846004815181106108d557fe5b602002602001018190525050506040518060400160405280600b81526020016a415554484f524954592d4160a81b8152508360058151811061091357fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000060405160240161094f91906123f9565b60408051601f198184030181529190526020810180516001600160e01b0316630a3b0a4f60e01b17905282518390600590811061098857fe5b60200260200101819052506040518060400160405280600b81526020016a415554484f524954592d4160a81b815250836006815181106109c457fe5b602002602001018190525073c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6040516024016109f491906123f9565b60408051601f198184030181529190526020810180516001600160e01b0316631484968760e11b179052825183906006908110610a2d57fe5b60200260200101819052507328849d2b63fa8d361e5fc15cb8abb13019884d099650600095506040518060400160405280601e81526020017f6361737428737472696e675b5d2c62797465735b5d2c616464726573732900008152509450828230604051602001610aa09392919061256f565b604051602081830303815290604052935050505090919293565b6000806060807f0000000000000000000000000000000000000000000000000000000000000000935060009250604051806060016040528060368152602001612983603691396040805160008082526020820183529294507f00000000000000000000000000000000000000000000000000000000000000009291610b42913091810161240d565b60408051601f198184030181529082905261031793929142906020016125ad565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080518082018252601981527f5f73657450656e64696e6741646d696e2861646472657373290000000000000060208083019190915291516000805160206129ea8339815191529260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b604080518082018252601881527f73657450656e64696e6741646d696e2861646472657373290000000000000000602080830191909152915173c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc926000929160609161031791734f6f977acdd1177dcd81ab83074855ecb9c2d49e91016123f9565b604080518082018252601b81527f5f736574496d706c656d656e746174696f6e286164647265737329000000000060208083019190915291516000805160206129ea8339815191529260009291606091610317917f000000000000000000000000000000000000000000000000000000000000000091016123f9565b732971adfa57b20e5a416ae5a708a8655a9c74f72381565b732971adfa57b20e5a416ae5a708a8655a9c74f7236001600160a01b031663cf1a0ddc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050506000805160206129ea8339815191526001600160a01b031663e9c714f26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b5050604051630efd8dad60e11b81526000805160206129ea8339815191529250631dfb1b5a9150610e0890611c2090600401612915565b600060405180830381600087803b158015610e2257600080fd5b505af1158015610e36573d6000803e3d6000fd5b50506040516303a8b66360e21b81526000805160206129ea8339815191529250630ea2d98c9150610e6d9061384090600401612915565b600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b5050604051634dd18bf560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634dd18bf59150610ef9906000805160206129ea833981519152906004016123f9565b600060405180830381600087803b158015610f1357600080fd5b505af1158015610f27573d6000803e3d6000fd5b505050506000805160206129ea8339815191526001600160a01b031663c59fdd686040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f7457600080fd5b505af1158015610f88573d6000803e3d6000fd5b50506040516370bb923760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063e177246e9150610fdb906201518090600401612915565b600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366760d7d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561106657600080fd5b505afa15801561107a573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316732971adfa57b20e5a416ae5a708a8655a9c74f7236001600160a01b031663ee97f7f36040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f757600080fd5b505afa15801561110b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112f91906121dd565b6001600160a01b03161461115e5760405162461bcd60e51b81526004016111559061262b565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673a0d3707c569ff8c87fa923d3823ec5d81c98be786001600160a01b0316636e9960c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906121dd565b6001600160a01b0316146112335760405162461bcd60e51b815260040161115590612780565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000805160206129ea8339815191526001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a457600080fd5b505afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc91906121dd565b6001600160a01b0316146113025760405162461bcd60e51b81526004016111559061280f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000805160206129ea8339815191526001600160a01b031663d33219b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561137357600080fd5b505afa158015611387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ab91906121dd565b6001600160a01b0316146113d15760405162461bcd60e51b8152600401611155906128de565b60006001600160a01b03166000805160206129ea8339815191526001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b15801561142357600080fd5b505afa158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b91906121dd565b6001600160a01b0316146114815760405162461bcd60e51b8152600401611155906128de565b6000805160206129ea8339815191526001600160a01b031673c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e91906121dd565b6001600160a01b0316146115445760405162461bcd60e51b8152600401611155906127d8565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e6001600160a01b031673c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc6001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b1580156115af57600080fd5b505afa1580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e791906121dd565b6001600160a01b03161461160d5760405162461bcd60e51b815260040161115590612874565b6000805160206129ea8339815191526001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561167e57600080fd5b505afa158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b691906121dd565b6001600160a01b0316146116dc5760405162461bcd60e51b815260040161115590612662565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663267822476040518163ffffffff1660e01b815260040160206040518083038186803b15801561174057600080fd5b505afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177891906121dd565b6001600160a01b03161461179e5760405162461bcd60e51b815260040161115590612874565b604051632520e7ff60e01b81527328849d2b63fa8d361e5fc15cb8abb13019884d0990632520e7ff906117e99073c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc906004016123f9565b60206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611839919061220b565b156118565760405162461bcd60e51b81526004016111559061273f565b604051632520e7ff60e01b81527328849d2b63fa8d361e5fc15cb8abb13019884d0990632520e7ff906118ad907f0000000000000000000000000000000000000000000000000000000000000000906004016123f9565b60206040518083038186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd919061220b565b151560011461191e5760405162461bcd60e51b815260040161115590612708565b611c206000805160206129ea8339815191526001600160a01b0316633932abb16040518163ffffffff1660e01b815260040160206040518083038186803b15801561196857600080fd5b505afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a091906122c0565b146119bd5760405162461bcd60e51b81526004016111559061283d565b6138406000805160206129ea8339815191526001600160a01b03166302a251a36040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f91906122c0565b14611a5c5760405162461bcd60e51b8152600401611155906128a9565b620151807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906122c0565b14611b0e5760405162461bcd60e51b815260040161115590612690565b565b611c2081565b61384081565b6000805160206129ea83398151915281565b73c7cb1de2721bfc0e0da1b9d526bcdc54ef1c0efc81565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060807f000000000000000000000000000000000000000000000000000000000000000093506000925060405180606001604052806038815260200161294b603891396040805160008082526020820183529294507f00000000000000000000000000000000000000000000000000000000000000009291610b42913091810161240d565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea0114611c255760405162461bcd60e51b8152600401611155906126d1565b604080516008808252610120820190925260609082602082016101008036833701905050905060608267ffffffffffffffff81118015611c6457600080fd5b50604051908082528060200260200182016040528015611c8e578160200160208202803683370190505b50905060608367ffffffffffffffff81118015611caa57600080fd5b50604051908082528060200260200182016040528015611cde57816020015b6060815260200190600190039081611cc95790505b50905060608467ffffffffffffffff81118015611cfa57600080fd5b50604051908082528060200260200182016040528015611d2e57816020015b6060815260200190600190039081611d195790505b509050611d396103bc565b87600081518110611d4657fe5b6020026020010187600081518110611d5a57fe5b6020026020010187600081518110611d6e57fe5b6020026020010187600081518110611d8257fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611dac610c79565b87600181518110611db957fe5b6020026020010187600181518110611dcd57fe5b6020026020010187600181518110611de157fe5b6020026020010187600181518110611df557fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611e1f61029d565b87600281518110611e2c57fe5b6020026020010187600281518110611e4057fe5b6020026020010187600281518110611e5457fe5b6020026020010187600281518110611e6857fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611e9261032e565b87600381518110611e9f57fe5b6020026020010187600381518110611eb357fe5b6020026020010187600381518110611ec757fe5b6020026020010187600381518110611edb57fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611f05610b87565b87600481518110611f1257fe5b6020026020010187600481518110611f2657fe5b6020026020010187600481518110611f3a57fe5b6020026020010187600481518110611f4e57fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611f78610c03565b87600581518110611f8557fe5b6020026020010187600581518110611f9957fe5b6020026020010187600581518110611fad57fe5b6020026020010187600581518110611fc157fe5b6020908102919091010193909352929091529190526001600160a01b039091169052611feb610aba565b87600681518110611ff857fe5b602002602001018760068151811061200c57fe5b602002602001018760068151811061202057fe5b602002602001018760068151811061203457fe5b6020908102919091010193909352929091529190526001600160a01b03909116905261205e611b6a565b8760078151811061206b57fe5b602002602001018760078151811061207f57fe5b602002602001018760078151811061209357fe5b60200260200101876007815181106120a757fe5b6020908102919091010193909352929091529190526001600160a01b039091169052604051636d4ab48d60e11b81526000906000805160206129ea8339815191529063da95691a906121059088908890889088908e906004016124d0565b602060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215791906122c0565b9050600781146121795760405162461bcd60e51b8152600401611155906127aa565b50505050505050565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e81565b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b7f000000000000000000000000000000000000000000000000000000000000000081565b6201518081565b6000602082840312156121ee578081fd5b81516001600160a01b0381168114612204578182fd5b9392505050565b60006020828403121561221c578081fd5b81518015158114612204578182fd5b6000602080838503121561223d578182fd5b823567ffffffffffffffff80821115612254578384fd5b818501915085601f830112612267578384fd5b81358181111561227357fe5b604051601f8201601f191681018501838111828210171561229057fe5b60405281815283820185018810156122a6578586fd5b818585018683013790810190930193909352509392505050565b6000602082840312156122d1578081fd5b5051919050565b60008282518085526020808601955080818302840101818601855b8481101561232157601f1986840301895261230f8383516123b1565b988401989250908301906001016122f3565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b8481101561232157601f198684030189526123658383516123b1565b98840198925090830190600101612349565b6000815180845260208085019450808401835b838110156123a65781518752958201959082019060010161238a565b509495945050505050565b600081518084526123c981602086016020860161291e565b601f01601f19169290920160200192915050565b600082516123ef81846020870161291e565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a0604083015261244e60a08301846123b1565b949350505050565b6001600160a01b039586168152602081019490945291909316604083015260ff9283166060830152909116608082015260a00190565b600060018060a01b0386168252846020830152608060408301526124b360808301856123b1565b82810360608401526124c581856123b1565b979650505050505050565b60a0808252865190820181905260009060209060c0840190828a01845b828110156125125781516001600160a01b0316845292840192908401906001016124ed565b505050838103828501526125268189612377565b915050828103604084015261253b818761232e565b9050828103606084015261254f81866122d8565b9050828103608084015261256381856123b1565b98975050505050505050565b600060608252612582606083018661232e565b828103602084015261259481866122d8565b91505060018060a01b0383166040830152949350505050565b600060018060a01b038616825260ff8516602083015260a06040830152602460a08301527f657865637574655061796c6f616428616464726573732c737472696e672c627960c0830152637465732960e01b60e0830152610100806060840152612619818401866123b1565b91505082608083015295945050505050565b60208082526017908201527f496e737461496e6465782d77726f6e672d6d6173746572000000000000000000604082015260600190565b6020808252601490820152732a34b6b2b637b1b596bbb937b73396b0b236b4b760611b604082015260600190565b60208082526021908201527f54696d656c6f636b2d64656c61792d6e6f742d7365742d746f2d6f6e652d64616040820152607960f81b606082015260800190565b60208082526017908201527f6d73672e73656e6465722d6e6f742d70726f706f736572000000000000000000604082015260600190565b6020808252601f908201527f54726561737572792d6e65772d74696d656c6f636b2d6e6f742d616464656400604082015260600190565b60208082526021908201527f54726561737572792d6f6c642d74696d656c6f636b2d6e6f742d72656d6f76656040820152601960fa1b606082015260800190565b60208082526010908201526f2634ba3296bbb937b73396b0b236b4b760811b604082015260600190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b604082015260600190565b60208082526018908201527f4f6c642d74696d656c6f636b2d77726f6e672d61646d696e0000000000000000604082015260600190565b60208082526014908201527323b7bb32b93737b916bbb937b73396b0b236b4b760611b604082015260600190565b6020808252601f908201527f566f74696e672d64656c61792d6e6f742d7365742d746f2d6f6e652d64617900604082015260600190565b6020808252818101527f4f6c642d74696d656c6f636b2d77726f6e672d70656e64696e672d61646d696e604082015260600190565b6020808252818101527f566f74696e672d706572696f642d6e6f742d7365742d746f2d74776f2d646179604082015260600190565b60208082526017908201527f476f7665726e6f722d77726f6e672d74696d656c6f636b000000000000000000604082015260600190565b90815260200190565b60005b83811015612939578181015183820152602001612921565b8381111561107a575050600091015256fe657865637574655472616e73616374696f6e28616464726573732c75696e743235362c737472696e672c62797465732c75696e743235362971756575655472616e73616374696f6e28616464726573732c75696e743235362c737472696e672c62797465732c75696e7432353629776974686472617728616464726573732c75696e743235362c616464726573732c75696e743235362c75696e74323536290000000000000000000000000204cd037b2ec03605cfdfe482d8e257c765fa1ba2646970667358221220fd4b4b0956db73436ef7d6d3b9ea407c8d7614dd092f1660cc2547735ab0357164736f6c63430007030033","abi":[{"inputs":[{"internalType":"address","name":"governor_","type":"address"},{"internalType":"address","name":"timelock_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ADDRESS_THIS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR","outputs":[{"internalType":"contract IGovernorBravo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_IMPLEMENTATION_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INSTAINDEX","outputs":[{"internalType":"contract IInstaIndex","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LITE","outputs":[{"internalType":"contract ILite","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OLD_TIMELOCK","outputs":[{"internalType":"contract ITimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_DAY_TIME_IN_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_DAY_TIME_IN_SECONDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_MULTISIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK","outputs":[{"internalType":"contract ITimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY","outputs":[{"internalType":"contract IDSAV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TWO_DAY_TIME_IN_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action1","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action2","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action3","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action4","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action5","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action6","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"action7","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"action8","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifyProposal","outputs":[],"stateMutability":"view","type":"function"}]} |