0 txs
0 calls
constructor
constructor(address _token, address _timelock)
functions
BALLOT_TYPEHASH
viewfunction BALLOT_TYPEHASH() view returns (bytes32)
COUNTING_MODE
purefunction COUNTING_MODE() pure returns (string)
getActions
viewfunction getActions(uint256 proposalId) view returns (address[] targets, uint256[] values, string[] signatures, bytes[] calldatas)
getReceipt
viewfunction getReceipt(uint256 proposalId, address voter) view returns (tuple)
getVotes
viewfunction getVotes(address account, uint256 blockNumber) view returns (uint256)
hashProposal
purefunction hashProposal(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) pure returns (uint256)
hasVoted
viewfunction hasVoted(uint256 proposalId, address account) view returns (bool)
name
viewfunction name() view returns (string)
proposalDeadline
viewfunction proposalDeadline(uint256 proposalId) view returns (uint256)
proposalEta
viewfunction proposalEta(uint256 proposalId) view returns (uint256)
proposals
viewfunction proposals(uint256 proposalId) view returns (uint256 id, address proposer, uint256 eta, uint256 startBlock, uint256 endBlock, uint256 forVotes, uint256 againstVotes, uint256 abstainVotes, bool canceled, bool executed)
proposalSnapshot
viewfunction proposalSnapshot(uint256 proposalId) view returns (uint256)
proposalThreshold
purefunction proposalThreshold() pure returns (uint256)
quorum
purefunction quorum(uint256 blockNumber) pure returns (uint256)
quorumVotes
viewfunction quorumVotes() view returns (uint256)
state
viewfunction state(uint256 proposalId) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
timelock
viewfunction timelock() view returns (address)
token
viewfunction token() view returns (address)
version
viewfunction version() view returns (string)
votingDelay
purefunction votingDelay() pure returns (uint256)
votingPeriod
purefunction votingPeriod() pure returns (uint256)
__acceptAdmin
nonpayablefunction __acceptAdmin()
cancel
nonpayablefunction cancel(uint256 proposalId)
castVote
nonpayablefunction castVote(uint256 proposalId, uint8 support) returns (uint256)
castVoteBySig
nonpayablefunction castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) returns (uint256)
castVoteWithReason
nonpayablefunction castVoteWithReason(uint256 proposalId, uint8 support, string reason) returns (uint256)
execute
payablefunction execute(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) payable returns (uint256)
execute
payablefunction execute(uint256 proposalId) payable
propose
nonpayablefunction propose(address[] targets, uint256[] values, bytes[] calldatas, string description) returns (uint256)
propose
nonpayablefunction propose(address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, string description) returns (uint256)
queue
nonpayablefunction queue(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
queue
nonpayablefunction queue(uint256 proposalId)
updateTimelock
nonpayablefunction updateTimelock(address newTimelock)
events
ProposalCanceled
event ProposalCanceled(uint256 proposalId)
ProposalCreated
event ProposalCreated(uint256 proposalId, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, string description)
ProposalExecuted
event ProposalExecuted(uint256 proposalId)
ProposalQueued
event ProposalQueued(uint256 proposalId, uint256 eta)
TimelockChange
event TimelockChange(address oldTimelock, address newTimelock)
VoteCast
event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)
errors
No errors.
creation bytecode
0x6101406040523480156200001257600080fd5b50604051620043f6380380620043f6833981016040819052620000359162000253565b808260405180604001604052806007815260200166446f706544414f60c81b81525080620000686200012960201b60201c565b815160209283012081519183019190912060c082815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810195909552608080860193909352308583015280518086039092018252939092019092528051908401209052610100528151620001029160009190840190620001ad565b505060601b6001600160601b03191661012052620001208162000144565b505050620002e8565b6040805180820190915260018152603160f81b602082015290565b600354604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b828054620001bb9062000292565b90600052602060002090601f016020900481019282620001df57600085556200022a565b82601f10620001fa57805160ff19168380011785556200022a565b828001600101855582156200022a579182015b828111156200022a5782518255916020019190600101906200020d565b50620002389291506200023c565b5090565b5b808211156200023857600081556001016200023d565b600080604083850312156200026757600080fd5b82516200027481620002cf565b60208401519092506200028781620002cf565b809150509250929050565b600181811c90821680620002a757607f821691505b60208210811415620002c957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0381168114620002e557600080fd5b50565b60805160a05160c05160e051610100516101205160601c6140b462000342600039600081816107b701526122950152600061254f0152600061259e01526000612579015260006124fd0152600061252601526140b46000f3fe6080604052600436106102195760003560e01c80637d5e81e21161011d578063da95691a116100b0578063e23a9a521161007f578063f8ce560a11610064578063f8ce560a14610783578063fc0c546a146107a5578063fe0d94c1146107d957600080fd5b8063e23a9a521461068f578063eb9019d41461076357600080fd5b8063da95691a146105d5578063dd4e2ba5146105f5578063ddf0b0091461063b578063deaaa7cc1461065b57600080fd5b8063b9a61961116100ec578063b9a619611461054e578063c01f9e3714610563578063c59057e414610583578063d33219b4146105a357600080fd5b80637d5e81e2146104da578063a890c910146104fa578063ab58fb8e1461051a578063b58131b01461053a57600080fd5b8063328dd982116101b057806340e58ee51161017f57806354fd4d501161016457806354fd4d5014610470578063567813881461049a5780637b3c71d3146104ba57600080fd5b806340e58ee514610404578063438596321461042657600080fd5b8063328dd982146103725780633932abb1146103a25780633bccf4fd146103b75780633e4f49e6146103d757600080fd5b8063160cbed7116101ec578063160cbed71461030a57806324bc1a641461032a5780632656227d1461033f5780632d63f6931461035257600080fd5b8063013cf08b1461021e57806301ffc9a71461029957806302a251a3146102c957806306fdde03146102e8575b600080fd5b34801561022a57600080fd5b5061023e610239366004613a15565b6107ec565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156102a557600080fd5b506102b96102b4366004613960565b610895565b6040519015158152602001610290565b3480156102d557600080fd5b5061b2fa5b604051908152602001610290565b3480156102f457600080fd5b506102fd6108a6565b6040516102909190613db8565b34801561031657600080fd5b506102da610325366004613716565b610938565b34801561033657600080fd5b506102da610d38565b6102da61034d366004613716565b610d4d565b34801561035e57600080fd5b506102da61036d366004613a15565b610e5a565b34801561037e57600080fd5b5061039261038d366004613a15565b610e93565b6040516102909493929190613d6b565b3480156103ae57600080fd5b506133236102da565b3480156103c357600080fd5b506102da6103d2366004613b11565b611124565b3480156103e357600080fd5b506103f76103f2366004613a15565b6111b8565b6040516102909190613dcb565b34801561041057600080fd5b5061042461041f366004613a15565b6111c3565b005b34801561043257600080fd5b506102b9610441366004613a2e565b60008281526002602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561047c57600080fd5b506040805180820190915260018152603160f81b60208201526102fd565b3480156104a657600080fd5b506102da6104b5366004613a5e565b6114eb565b3480156104c657600080fd5b506102da6104d5366004613a8a565b611514565b3480156104e657600080fd5b506102da6104f53660046137a6565b611566565b34801561050657600080fd5b506104246105153660046139f8565b61157d565b34801561052657600080fd5b506102da610535366004613a15565b6115f1565b34801561054657600080fd5b5060326102da565b34801561055a57600080fd5b5061042461161e565b34801561056f57600080fd5b506102da61057e366004613a15565b611688565b34801561058f57600080fd5b506102da61059e366004613716565b6116b8565b3480156105af57600080fd5b506003546001600160a01b03165b6040516001600160a01b039091168152602001610290565b3480156105e157600080fd5b506102da6105f0366004613853565b6116f2565b34801561060157600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f00000000000060208201526102fd565b34801561064757600080fd5b50610424610656366004613a15565b611717565b34801561066757600080fd5b506102da7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b34801561069b57600080fd5b5061072e6106aa366004613a2e565b60408051606081018252600080825260208201819052918101919091525060009182526002602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046bffffffffffffffffffffffff169082015290565b6040805182511515815260208084015160ff1690820152918101516bffffffffffffffffffffffff1690820152606001610290565b34801561076f57600080fd5b506102da61077e3660046136ea565b611985565b34801561078f57600080fd5b506102da61079e366004613a15565b506101f490565b3480156107b157600080fd5b506105bd7f000000000000000000000000000000000000000000000000000000000000000081565b6104246107e7366004613a15565b611998565b80600080808080808080806108008a6115f1565b975061080b8b610e5a565b96506108168b611688565b60008c815260026020526040812080546005820154600683015460078401546001600160a01b039093169e50949a5098509296509194506108568d6111b8565b9050600281600781111561086c5761086c614027565b149350600781600781111561088357610883614027565b14925050509193959799509193959799565b60006108a082611c06565b92915050565b6060600080546108b590613fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546108e190613fc1565b801561092e5780601f106109035761010080835404028352916020019161092e565b820191906000526020600020905b81548152906001019060200180831161091157829003601f168201915b5050505050905090565b600080610947868686866116b8565b90506004610954826111b8565b600781111561096557610965614027565b146109c15760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756044820152601b60fa1b60648201526084015b60405180910390fd5b60035460408051630d48571f60e31b815290516000926001600160a01b031691636a42b8f8916004808301926020929190829003018186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190613947565b610a489042613f3a565b9050610a84610a5682611c2b565b600084815260046020526040902090815467ffffffffffffffff191667ffffffffffffffff91909116179055565b60005b8751811015610cf35760035488516001600160a01b039091169063f2b06537908a9084908110610ab957610ab961403d565b6020026020010151898481518110610ad357610ad361403d565b6020026020010151898581518110610aed57610aed61403d565b602002602001015186604051602001610b099493929190613cd9565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610b3d91815260200190565b60206040518083038186803b158015610b5557600080fd5b505afa158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190613925565b15610c0b5760405162461bcd60e51b815260206004820152604260248201527f476f7665726e6f7254696d656c6f636b436f6d706f756e643a206964656e746960448201527f63616c2070726f706f73616c20616374696f6e20616c72656164792071756575606482015261195960f21b608482015260a4016109b8565b60035488516001600160a01b0390911690633a66f901908a9084908110610c3457610c3461403d565b6020026020010151898481518110610c4e57610c4e61403d565b6020026020010151898581518110610c6857610c6861403d565b6020026020010151866040518563ffffffff1660e01b8152600401610c909493929190613cd9565b602060405180830381600087803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce29190613947565b50610cec81613ff6565b9050610a87565b5060408051838152602081018390527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289291015b60405180910390a15095945050505050565b6000610d4861079e600143613f7e565b905090565b600080610d5c868686866116b8565b90506000610d69826111b8565b90506004816007811115610d7f57610d7f614027565b1480610d9c57506005816007811115610d9a57610d9a614027565b145b610df25760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756044820152601b60fa1b60648201526084016109b8565b600082815260016020818152604092839020600201805460ff191690921790915590518381527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f910160405180910390a1610e508288888888611caf565b5095945050505050565b600081815260016020908152604080832081519283019091525467ffffffffffffffff16908190525b67ffffffffffffffff1692915050565b60608060608060006002600087815260200190815260200160002090508060010181600201826003018360040183805480602002602001604051908101604052809291908181526020018280548015610f1557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef7575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610f6757602002820191906000526020600020905b815481526020019060010190808311610f53575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561103b578382906000526020600020018054610fae90613fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610fda90613fc1565b80156110275780601f10610ffc57610100808354040283529160200191611027565b820191906000526020600020905b81548152906001019060200180831161100a57829003601f168201915b505050505081526020019060010190610f8f565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561110e57838290600052602060002001805461108190613fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546110ad90613fc1565b80156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050505081526020019060010190611062565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff851660608201526000908190611190906111889060800160405160208183030381529060405280519060200120611cc3565b868686611d11565b90506111ad87828860405180602001604052806000815250611d2f565b979650505050505050565b60006108a082611e3b565b600081815260026020526040902080546001600160a01b0316336001600160a01b0316148061120b575060328154611209906001600160a01b031661077e600143613f7e565b105b61127d5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f766520746860448201527f726573686f6c640000000000000000000000000000000000000000000000000060648201526084016109b8565b6114e6816001018054806020026020016040519081016040528092919081815260200182805480156112d857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112ba575b50505050508260020180548060200260200160405190810160405280929190818152602001828054801561132b57602002820191906000526020600020905b815481526020019060010190808311611317575b50505050506114dc84600301805480602002602001604051908101604052809291908181526020016000905b8282101561140357838290600052602060002001805461137690613fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546113a290613fc1565b80156113ef5780601f106113c4576101008083540402835291602001916113ef565b820191906000526020600020905b8154815290600101906020018083116113d257829003601f168201915b505050505081526020019060010190611357565b50505060048701805460408051602080840282018101909252828152935060009084015b828210156114d357838290600052602060002001805461144690613fc1565b80601f016020809104026020016040519081016040528092919081815260200182805461147290613fc1565b80156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b505050505081526020019060010190611427565b50505050611f2b565b84600901546120a1565b505050565b60008033905061150c84828560405180602001604052806000815250611d2f565b949350505050565b60008033905061155c86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2f92505050565b9695505050505050565b6000611574858585856120af565b95945050505050565b611585612118565b6001600160a01b0316336001600160a01b0316146115e55760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e6365000000000000000060448201526064016109b8565b6115ee8161212c565b50565b600081815260046020908152604080832081519283019091525467ffffffffffffffff1690819052610e83565b600360009054906101000a90046001600160a01b03166001600160a01b0316630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b50505050565b600081815260016020818152604080842081519283019091529091015467ffffffffffffffff1690819052610e83565b6000848484846040516020016116d19493929190613d20565b60408051601f19818403018152919052805160209091012095945050505050565b60006117023387878787876121a2565b61155c86866117118787611f2b565b85611566565b60008181526002602090815260409182902060018101805484518185028101850190955280855291936114e69390929083018282801561178057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611762575b5050505050826002018054806020026020016040519081016040528092919081815260200182805480156117d357602002820191906000526020600020905b8154815260200190600101908083116117bf575b505050505061197b84600301805480602002602001604051908101604052809291908181526020016000905b828210156118ab57838290600052602060002001805461181e90613fc1565b80601f016020809104026020016040519081016040528092919081815260200182805461184a90613fc1565b80156118975780601f1061186c57610100808354040283529160200191611897565b820191906000526020600020905b81548152906001019060200180831161187a57829003601f168201915b5050505050815260200190600101906117ff565b50505060048701805460408051602080840282018101909252828152935060009084015b828210156114d35783829060005260206000200180546118ee90613fc1565b80601f016020809104026020016040519081016040528092919081815260200182805461191a90613fc1565b80156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050815260200190600101906118cf565b8460090154610938565b6000611991838361226c565b9392505050565b60008181526002602090815260409182902060018101805484518185028101850190955280855291936114e693909290830182828015611a0157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119e3575b505050505082600201805480602002602001604051908101604052809291908181526020018280548015611a5457602002820191906000526020600020905b815481526020019060010190808311611a40575b5050505050611bfc84600301805480602002602001604051908101604052809291908181526020016000905b82821015611b2c578382906000526020600020018054611a9f90613fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054611acb90613fc1565b8015611b185780601f10611aed57610100808354040283529160200191611b18565b820191906000526020600020905b815481529060010190602001808311611afb57829003601f168201915b505050505081526020019060010190611a80565b50505060048701805460408051602080840282018101909252828152935060009084015b828210156114d3578382906000526020600020018054611b6f90613fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9b90613fc1565b8015611be85780601f10611bbd57610100808354040283529160200191611be8565b820191906000526020600020905b815481529060010190602001808311611bcb57829003601f168201915b505050505081526020019060010190611b50565b8460090154610d4d565b60006001600160e01b03198216636e665ced60e01b14806108a057506108a082612326565b600067ffffffffffffffff821115611cab5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f342062697473000000000000000000000000000000000000000000000000000060648201526084016109b8565b5090565b611cbc858585858561235b565b5050505050565b60006108a0611cd06124f9565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611d22878787876125ec565b91509150610e50816126d9565b6000848152600160208190526040822090611d49876111b8565b6007811115611d5a57611d5a614027565b14611db35760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016109b8565b6040805160208101909152815467ffffffffffffffff1690819052600090611ddc908790611985565b9050611dea87878784612894565b856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda488878488604051611e299493929190613e95565b60405180910390a29695505050505050565b600080611e4783612a5e565b90506004816007811115611e5d57611e5d614027565b14611e685792915050565b6000611e73846115f1565b905080611e81575092915050565b600360009054906101000a90046001600160a01b03166001600160a01b031663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b158015611ecf57600080fd5b505afa158015611ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f079190613947565b611f119082613f3a565b4210611f21575060069392505050565b5060059392505050565b60606000825167ffffffffffffffff811115611f4957611f49614053565b604051908082528060200260200182016040528015611f7c57816020015b6060815260200190600190039081611f675790505b50905060005b845181101561209957848181518110611f9d57611f9d61403d565b60200260200101515160001461205057848181518110611fbf57611fbf61403d565b6020026020010151848281518110611fd957611fd961403d565b6020026020010151604051602401611ff19190613db8565b60408051601f19818403018152908290529161200c91613cbd565b6040519081900390206020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990921691909117905261206b565b8381815181106120625761206261403d565b60200260200101515b82828151811061207d5761207d61403d565b60200260200101819052508061209290613ff6565b9050611f82565b509392505050565b600061157485858585612bc7565b600061210c338686865167ffffffffffffffff8111156120d1576120d1614053565b60405190808252806020026020018201604052801561210457816020015b60608152602001906001900390816120ef5790505b5087876121a2565b61157485858585612ce2565b6000610d486003546001600160a01b031690565b600354604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b8051602082012060006121c087876121ba8888611f2b565b856116b8565b600081815260026020526040902060098101549192509061226157805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a16178155875161221690600183019060208b019061321f565b50865161222c90600283019060208a019061328d565b50855161224290600383019060208901906132c8565b5084516122589060048301906020880190613321565b50600981018390555b505050505050505050565b60405163782d6fe160e01b81526001600160a01b038381166004830152602482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063782d6fe19060440160206040518083038186803b1580156122d957600080fd5b505afa1580156122ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123119190613b5f565b6bffffffffffffffffffffffff169392505050565b60006001600160e01b0319821663bf26d89760e01b14806108a057506301ffc9a760e01b6001600160e01b03198316146108a0565b6000612366866115f1565b9050600081116123de5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f7254696d656c6f636b436f6d706f756e643a2070726f706f7360448201527f616c206e6f74207965742071756575656400000000000000000000000000000060648201526084016109b8565b60005b85518110156124f05760035485516001600160a01b0390911690630825f38f908790849081106124135761241361403d565b602002602001015188848151811061242d5761242d61403d565b60200260200101518885815181106124475761244761403d565b60200260200101518886815181106124615761246161403d565b6020026020010151876040518663ffffffff1660e01b81526004016124899493929190613cd9565b6000604051808303818588803b1580156124a257600080fd5b505af11580156124b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526124df919081019061398a565b506124e981613ff6565b90506123e1565b50505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046141561254857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561262357506000905060036126d0565b8460ff16601b1415801561263b57508460ff16601c14155b1561264c57506000905060046126d0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156126a0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126c9576000600192509250506126d0565b9150600090505b94509492505050565b60008160048111156126ed576126ed614027565b14156126f65750565b600181600481111561270a5761270a614027565b14156127585760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109b8565b600281600481111561276c5761276c614027565b14156127ba5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109b8565b60038160048111156127ce576127ce614027565b14156128275760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109b8565b600481600481111561283b5761283b614027565b14156115ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109b8565b60008481526002602090815260408083206001600160a01b038716845260088101909252909120805460ff16156129335760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201527f20616c726561647920636173740000000000000000000000000000000000000060648201526084016109b8565b805460ff85166101000261ffff1990911617600117815561295383612d81565b81546bffffffffffffffffffffffff9190911662010000026dffffffffffffffffffffffff00001990911617815560ff84166129a8578282600601600082825461299d9190613f3a565b90915550612a569050565b60ff8416600114156129c8578282600501600082825461299d9190613f3a565b60ff8416600214156129e8578282600701600082825461299d9190613f3a565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201527f6c696420766f746520747970650000000000000000000000000000000000000060648201526084016109b8565b505050505050565b6000818152600160208181526040808420815160a081018352815467ffffffffffffffff90811660808301908152825283518086018552958301541685529283019390935260029092015460ff80821615801594840194909452610100909104161515606082015290612ad45750600792915050565b806060015115612ae75750600292915050565b8051514367ffffffffffffffff9091161115612b065750600092915050565b6020810151514367ffffffffffffffff9091161115612b285750600192915050565b612b358160200151612e05565b15612b7957612b4383612e36565b8015612b65575060008381526002602052604090206006810154600590910154115b612b70576003611991565b60049392505050565b60405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016109b8565b50919050565b600080612bd686868686612e5d565b90506000612be3826115f1565b90508015610e505760005b8751811015612cbf5760035488516001600160a01b039091169063591fcdfe908a9084908110612c2057612c2061403d565b6020026020010151898481518110612c3a57612c3a61403d565b6020026020010151898581518110612c5457612c5461403d565b6020026020010151866040518563ffffffff1660e01b8152600401612c7c9493929190613cd9565b600060405180830381600087803b158015612c9657600080fd5b505af1158015612caa573d6000803e3d6000fd5b5050505080612cb890613ff6565b9050612bee565b506000828152600460205260409020805467ffffffffffffffff19169055610e50565b60006032612cf53361077e600143613f7e565b1015612d755760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a2070726f7060448201527f6f73657220766f7465732062656c6f772070726f706f73616c207468726573686064820152621bdb1960ea1b608482015260a4016109b8565b61157485858585612f69565b60006bffffffffffffffffffffffff821115611cab5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016109b8565b6000612e1b825167ffffffffffffffff16151590565b80156108a0575050514367ffffffffffffffff909116111590565b60008181526002602052604081206005810154612e5561079e85610e5a565b109392505050565b600080612e6c868686866116b8565b90506000612e79826111b8565b90506002816007811115612e8f57612e8f614027565b14158015612eaf57506006816007811115612eac57612eac614027565b14155b8015612ecd57506007816007811115612eca57612eca614027565b14155b612f195760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016109b8565b60008281526001602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610d269084815260200190565b600080612f7f86868686805190602001206116b8565b90508451865114612fdc5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746044820152600d60fb1b60648201526084016109b8565b83518651146130375760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746044820152600d60fb1b60648201526084016109b8565b60008651116130885760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016109b8565b6000818152600160209081526040918290208251918201909252815467ffffffffffffffff1690819052156131095760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016109b8565b6000613116613323611c2b565b61311f43611c2b565b6131299190613f52565b9050600061313861b2fa611c2b565b6131429083613f52565b835467ffffffffffffffff191667ffffffffffffffff8416178455905060018301805467ffffffffffffffff191667ffffffffffffffff83161790557f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e084338b8b8d5167ffffffffffffffff8111156131bd576131bd614053565b6040519080825280602002602001820160405280156131f057816020015b60608152602001906001900390816131db5790505b508c88888e60405161320a99989796959493929190613df3565b60405180910390a15091979650505050505050565b828054828255906000526020600020908101928215613281579160200282015b82811115613281578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390911617825560209092019160019091019061323f565b50611cab92915061337a565b828054828255906000526020600020908101928215613281579160200282015b828111156132815782518255916020019190600101906132ad565b828054828255906000526020600020908101928215613315579160200282015b82811115613315578251805161330591849160209091019061338f565b50916020019190600101906132e8565b50611cab929150613402565b82805482825590600052602060002090810192821561336e579160200282015b8281111561336e578251805161335e91849160209091019061338f565b5091602001919060010190613341565b50611cab92915061341f565b5b80821115611cab576000815560010161337b565b82805461339b90613fc1565b90600052602060002090601f0160209004810192826133bd5760008555613281565b82601f106133d657805160ff1916838001178555613281565b8280016001018555821561328157918201828111156132815782518255916020019190600101906132ad565b80821115611cab576000613416828261343c565b50600101613402565b80821115611cab576000613433828261343c565b5060010161341f565b50805461344890613fc1565b6000825580601f10613458575050565b601f0160209004906000526020600020908101906115ee919061337a565b600061348961348484613f12565b613ebd565b905082815283838301111561349d57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126134c557600080fd5b813560206134d561348483613eee565b80838252828201915082860187848660051b89010111156134f557600080fd5b60005b8581101561351d57813561350b81614069565b845292840192908401906001016134f8565b5090979650505050505050565b600082601f83011261353b57600080fd5b8135602061354b61348483613eee565b80838252828201915082860187848660051b890101111561356b57600080fd5b60005b8581101561351d57813567ffffffffffffffff81111561358d57600080fd5b8801603f81018a1361359e57600080fd5b6135af8a8783013560408401613476565b855250928401929084019060010161356e565b600082601f8301126135d357600080fd5b813560206135e361348483613eee565b80838252828201915082860187848660051b890101111561360357600080fd5b6000805b8681101561364657823567ffffffffffffffff811115613625578283fd5b6136338b88838d01016136b4565b8652509385019391850191600101613607565b509198975050505050505050565b600082601f83011261366557600080fd5b8135602061367561348483613eee565b80838252828201915082860187848660051b890101111561369557600080fd5b60005b8581101561351d57813584529284019290840190600101613698565b600082601f8301126136c557600080fd5b61199183833560208501613476565b803560ff811681146136e557600080fd5b919050565b600080604083850312156136fd57600080fd5b823561370881614069565b946020939093013593505050565b6000806000806080858703121561372c57600080fd5b843567ffffffffffffffff8082111561374457600080fd5b613750888389016134b4565b9550602087013591508082111561376657600080fd5b61377288838901613654565b9450604087013591508082111561378857600080fd5b506137958782880161352a565b949793965093946060013593505050565b600080600080608085870312156137bc57600080fd5b843567ffffffffffffffff808211156137d457600080fd5b6137e0888389016134b4565b955060208701359150808211156137f657600080fd5b61380288838901613654565b9450604087013591508082111561381857600080fd5b6138248883890161352a565b9350606087013591508082111561383a57600080fd5b50613847878288016136b4565b91505092959194509250565b600080600080600060a0868803121561386b57600080fd5b853567ffffffffffffffff8082111561388357600080fd5b61388f89838a016134b4565b965060208801359150808211156138a557600080fd5b6138b189838a01613654565b955060408801359150808211156138c757600080fd5b6138d389838a016135c2565b945060608801359150808211156138e957600080fd5b6138f589838a0161352a565b9350608088013591508082111561390b57600080fd5b50613918888289016136b4565b9150509295509295909350565b60006020828403121561393757600080fd5b8151801515811461199157600080fd5b60006020828403121561395957600080fd5b5051919050565b60006020828403121561397257600080fd5b81356001600160e01b03198116811461199157600080fd5b60006020828403121561399c57600080fd5b815167ffffffffffffffff8111156139b357600080fd5b8201601f810184136139c457600080fd5b80516139d261348482613f12565b8181528560208385010111156139e757600080fd5b611574826020830160208601613f95565b600060208284031215613a0a57600080fd5b813561199181614069565b600060208284031215613a2757600080fd5b5035919050565b60008060408385031215613a4157600080fd5b823591506020830135613a5381614069565b809150509250929050565b60008060408385031215613a7157600080fd5b82359150613a81602084016136d4565b90509250929050565b60008060008060608587031215613aa057600080fd5b84359350613ab0602086016136d4565b9250604085013567ffffffffffffffff80821115613acd57600080fd5b818701915087601f830112613ae157600080fd5b813581811115613af057600080fd5b886020828501011115613b0257600080fd5b95989497505060200194505050565b600080600080600060a08688031215613b2957600080fd5b85359450613b39602087016136d4565b9350613b47604087016136d4565b94979396509394606081013594506080013592915050565b600060208284031215613b7157600080fd5b81516bffffffffffffffffffffffff8116811461199157600080fd5b600081518084526020808501945080840160005b83811015613bc65781516001600160a01b031687529582019590820190600101613ba1565b509495945050505050565b600082825180855260208086019550808260051b84010181860160005b8481101561351d57601f19868403018952613c0a838351613c91565b98840198925090830190600101613bee565b6000815180845260208085019450848260051b860182860160005b8581101561351d578383038952613c4f838351613c91565b98850198925090840190600101613c37565b600081518084526020808501945080840160005b83811015613bc657815187529582019590820190600101613c75565b60008151808452613ca9816020860160208601613f95565b601f01601f19169290920160200192915050565b60008251613ccf818460208701613f95565b9190910192915050565b6001600160a01b038516815283602082015260a06040820152600060a082015260c060608201526000613d0f60c0830185613c91565b905082608083015295945050505050565b608081526000613d336080830187613b8d565b8281036020840152613d458187613c61565b90508281036040840152613d598186613bd1565b91505082606083015295945050505050565b608081526000613d7e6080830187613b8d565b8281036020840152613d908187613c61565b90508281036040840152613da48186613c1c565b905082810360608401526111ad8185613bd1565b6020815260006119916020830184613c91565b6020810160088310613ded57634e487b7160e01b600052602160045260246000fd5b91905290565b60006101208b83526001600160a01b038b166020840152806040840152613e1c8184018b613b8d565b90508281036060840152613e30818a613c61565b90508281036080840152613e448189613c1c565b905082810360a0840152613e588188613bd1565b67ffffffffffffffff87811660c0860152861660e08501528381036101008501529050613e858185613c91565b9c9b505050505050505050505050565b84815260ff8416602082015282604082015260806060820152600061155c6080830184613c91565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ee657613ee6614053565b604052919050565b600067ffffffffffffffff821115613f0857613f08614053565b5060051b60200190565b600067ffffffffffffffff821115613f2c57613f2c614053565b50601f01601f191660200190565b60008219821115613f4d57613f4d614011565b500190565b600067ffffffffffffffff808316818516808303821115613f7557613f75614011565b01949350505050565b600082821015613f9057613f90614011565b500390565b60005b83811015613fb0578181015183820152602001613f98565b838111156116825750506000910152565b600181811c90821680613fd557607f821691505b60208210811415612bc157634e487b7160e01b600052602260045260246000fd5b600060001982141561400a5761400a614011565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146115ee57600080fdfea2646970667358221220965ec9dbb81e6ab3c51f6af23afba56d9dcc5b6fb6b7aad44e36ccb272f9e0ab64736f6c634300080700330000000000000000000000008707276df042e89669d69a177d3da7dc78bd8723000000000000000000000000b20adb7aa32361dadfdeb87dd6a072e7b75a7b59