[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "initialOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101608060405234620000dd5762002ff29081380380926200002182620000f8565b823960608282019212620000dd5780516001600160401b039290838111620000dd57816200005191840162000176565b9261018051908111620000dd576200006a920162000176565b6101a051906001600160a01b0382168203620000dd576200008b92620001f2565b604051611ed79081620010db823960805181610f82015260a0518161103d015260c05181610f4c015260e05181610fd101526101005181610ff7015261012051816106c6015261014051816106f00152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b601f01601f1916610160908101906001600160401b038211908210176200011e57604052565b620000e2565b604081019081106001600160401b038211176200011e57604052565b604051906200014f8262000124565b565b60005b838110620001655750506000910152565b818101518382015260200162000154565b81601f82011215620000dd5780516001600160401b03928382116200011e5760405193601f8301601f19908116603f01168501908111858210176200011e5760405281845260208284010111620000dd57620001d9916020808501910162000151565b90565b634e487b7160e01b600052601160045260246000fd5b92919092604051620002048162000124565b6001808252603160f81b602080840191825284519194926001600160401b0383116200011e5762000242836200023c60035462000376565b620003b3565b602091601f8411600114620002e05750509662000281826200028a936200014f999a600091620002d4575b508160011b916000199060031b1c19161790565b6003556200051f565b620002958162000711565b61012052620002a4826200081e565b610140526020815191012060e052519020610100524660a052620002c76200092b565b6080523060c0526200061a565b9050850151386200026d565b60036000529190601f198416907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b936000915b8383106200035e57505050926200014f989992600192826200028a961062000344575b5050811b016003556200051f565b86015160001960f88460031b161c19169055388062000336565b87850151865594850194938101939181019162000313565b90600182811c92168015620003a8575b60208310146200039257565b634e487b7160e01b600052602260045260246000fd5b91607f169162000386565b601f8111620003c0575050565b60009060036000526020600020906020601f850160051c8301941062000403575b601f0160051c01915b828110620003f757505050565b818155600101620003ea565b9092508290620003e1565b601f81116200041b575050565b60009060046000526020600020906020601f850160051c830194106200045e575b601f0160051c01915b8281106200045257505050565b81815560010162000445565b90925082906200043c565b601f811162000476575050565b60009060056000526020600020906020601f850160051c83019410620004b9575b601f0160051c01915b828110620004ad57505050565b818155600101620004a0565b909250829062000497565b601f8111620004d1575050565b60009060066000526020600020906020601f850160051c8301941062000514575b601f0160051c01915b8281106200050857505050565b818155600101620004fb565b9092508290620004f2565b80519091906001600160401b0381116200011e576200054b816200054560045462000376565b6200040e565b602080601f8311600114620005925750819062000581939460009262000586575b50508160011b916000199060031b1c19161790565b600455565b0151905038806200056c565b6004600052601f198316949091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b926000905b87821062000601575050836001959610620005e7575b505050811b01600455565b015160001960f88460031b161c19169055388080620005dc565b80600185968294968601518155019501930190620005c6565b6001600160a01b0381168015620006f8576002546b033b2e3c9fd0803ce800000090818101809111620006f2576002556001600160a01b038316600090815260208190526040902090815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405180620006aa81906b033b2e3c9fd0803ce8000000602083019252565b0390a36002546001600160d01b038111620006cb57506200014f9062000a06565b604051630e58ae9360e11b815260048101919091526001600160d01b036024820152604490fd5b620001dc565b60405163ec442f0560e01b815260006004820152602490fd5b90815160208082106000146200072f57505090620001d99062000997565b6001600160401b0382116200011e5762000756826200075060055462000376565b62000469565b602090601f831160011462000793575081906200078b9394600092620005865750508160011b916000199060031b1c19161790565b60055560ff90565b6005600052601f198316949091907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0926000905b87821062000805575050836001959610620007eb575b505050811b0160055560ff90565b015160001960f88460031b161c19169055388080620007dd565b80600185968294968601518155019501930190620007c7565b90815160208082106000146200083c57505090620001d99062000997565b6001600160401b0382116200011e5762000863826200085d60065462000376565b620004c4565b602090601f8311600114620008a057508190620008989394600092620005865750508160011b916000199060031b1c19161790565b60065560ff90565b6006600052601f198316949091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f926000905b87821062000912575050836001959610620008f8575b505050811b0160065560ff90565b015160001960f88460031b161c19169055388080620008ea565b80600185968294968601518155019501930190620008d4565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b038211176200011e5760405251902090565b601f815111620009c5576020815191015160208210620009b5571790565b6000198260200360031b1b161790565b6044604051809263305a27a960e01b825260206004830152620009f8815180928160248601526020868601910162000151565b601f01601f19168101030190fd5b65ffffffffffff9081431162000ad557600a548062000aa2575062000a3e6200014f9262000a35600062001091565b90431662000e53565b50506001600160a01b0390811690811562000a90575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75460009283526040909220548116911662000be2565b62000a9a62000af4565b505062000a54565b91600019908382810111620006f25762000a3562000a3e926200014f95600a600052602060002001015460301c62001091565b6040516306dfcc6560e41b815260306004820152436024820152604490fd5b65ffffffffffff80431162000ad557600a548062000b43575060005b6001600160d01b039081166b033b2e3c9fd0803ce7ffffff1901908111620006f25762000b3f91431662000e53565b9091565b600019908082810111620006f257600a6000520160008051602062002fb2833981519152015460301c62000b10565b65ffffffffffff9081431162000ad55780548062000bbe57506000905b6001600160d01b039182166b033b2e3c9fd0803ce800000001918211620006f25762000b3f9243169062000f96565b600019908082810111620006f25782600052602060002001015460301c9062000b8f565b6001600160a01b03808316929190811690818414158062000d35575b62000c0a575b50505050565b8162000c78575b50508162000c22575b808062000c04565b6001600160a01b0316600090815260096020526040902060008051602062002fd28339815191529062000c559062000b72565b604080516001600160d01b039384168152919092166020820152a2388062000c1a565b6001600160a01b0316600090815260096020526040902065ffffffffffff9081431162000ad55780548062000cf7575060008051602062002fd28339815191529162000cd49162000cca6000620010b5565b9143169062000f96565b604080516001600160d01b039384168152919092166020820152a2388062000c11565b91600019918383810111620006f25762000cca62000cd49360008051602062002fd28339815191529583600052602060002001015460301c620010b5565b50600162000bfe565b600019810191908211620006f257565b600a5490680100000000000000008210156200011e576001820180600a5582101562000db057600a60005280516020919091015160301b65ffffffffffff191665ffffffffffff919091161760008051602062002fb283398151915290910155565b634e487b7160e01b600052603260045260246000fd5b908154680100000000000000008110156200011e576001810180845581101562000db05760009283526020928390208251929093015160301b65ffffffffffff191665ffffffffffff9290921691909117910155565b604080519192919081016001600160401b038111828210176200011e57604052915465ffffffffffff8116835260301c6020830152565b600a5491929190811562000f675762000e9362000e8d62000e748462000d3e565b600a60005260008051602062002fb28339815191520190565b62000e1c565b805165ffffffffffff838116949116841062000f55578560209362000f139562000ed262000ec7865165ffffffffffff1690565b65ffffffffffff1690565b0362000f17575062000eec62000e7462000f059362000d3e565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b905062000f4f915062000f3b62000f2d62000140565b65ffffffffffff9092168252565b6001600160d01b0387168185015262000d4e565b62000f05565b604051632520601d60e01b8152600490fd5b62000f90915062000f7b62000f2d62000140565b6001600160d01b038416602082015262000d4e565b60009190565b805492939291908215620010685762000fc462000e8d62000fb78562000d3e565b8360005260206000200190565b9062000fd6825165ffffffffffff1690565b65ffffffffffff8481169116811062000f555762000f139460209488926200100862000ec7875165ffffffffffff1690565b0362001030575062000f05926200102362000eec9262000d3e565b9060005260206000200190565b91505062000f4f91620010546200104662000140565b65ffffffffffff9093168352565b6001600160d01b0388168286015262000dc6565b62000f9092506200107c6200104662000140565b6001600160d01b038516602083015262000dc6565b6001600160d01b039081166b033b2e3c9fd0803ce800000001908111620006f25790565b6001600160d01b039081166b033b2e3c9fd0803ce7ffffff1901908111620006f2579056fe6080604052600436101561001257600080fd5b60003560e01c806306fdde0314610187578063095ea7b31461018257806318160ddd1461017d57806323b872dd14610178578063313ce567146101735780633644e5151461016e5780633a46b1a8146101695780634bf5d7e914610164578063587cde1e1461015f5780635c19a95c1461015a5780636fcfff451461015557806370a08231146101505780637ecebe001461014b57806384b0196e146101465780638e539e8c1461014157806391ddadf41461013c57806395d89b41146101375780639ab24eb014610132578063a9059cbb1461012d578063c3cda52014610128578063d505accf14610123578063dd62ed3e1461011e5763f1127ed81461011957600080fd5b610c7d565b610c25565b610af1565b610a28565b6109e2565b610999565b6108f1565b6108c5565b6107a6565b6106ab565b610671565b610638565b6105d0565b6105ac565b610571565b6104df565b610434565b610411565b6103f5565b610349565b61032b565b6102fa565b6101e0565b919082519283825260005b8481106101b8575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610197565b9060206101dd92818152019061018c565b90565b346102c9576000806003193601126102c65760405190806003549061020482610d28565b808552916020916001918281169081156102995750600114610241575b61023d8661023181880382610ded565b604051918291826101cc565b0390f35b9350600384527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b838510610286575050505081016020016102318261023d38610221565b8054868601840152938201938101610269565b905086955061023d9693506020925061023194915060ff191682840152151560051b820101929338610221565b80fd5b600080fd5b600435906001600160a01b03821682036102c957565b602435906001600160a01b03821682036102c957565b346102c95760403660031901126102c9576103206103166102ce565b602435903361131b565b602060405160018152f35b346102c95760003660031901126102c9576020600254604051908152f35b346102c95760603660031901126102c9576103626102ce565b61036a6102e4565b6001600160a01b0382166000908152600160209081526040808320338452909152902060443591905492600184016103b3575b6103a79350610e37565b60405160018152602090f35b8284106103cf576103ca836103a7950333836113cf565b61039d565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b346102c95760003660031901126102c957602060405160128152f35b346102c95760003660031901126102c957602061042c610f49565b604051908152f35b346102c95760403660031901126102c95761044d6102ce565b60243561045943611063565b9165ffffffffffff83168210156104b4576001600160a01b0316600090815260096020526040902061023d92506001600160d01b03916104a3919061049d90611063565b906110b2565b604051911681529081906020820190565b50604051637669fc0f60e11b8152600481019190915265ffffffffffff919091166024820152604490fd5b346102c95760003660031901126102c9576104f943611063565b65ffffffffffff8061050a43611063565b1691160361055f5761023d60405161052181610d78565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015260405191829160208352602083019061018c565b6040516301bfc1c560e61b8152600490fd5b346102c95760203660031901126102c95760206001600160a01b03806105956102ce565b166000526008825260406000205416604051908152f35b346102c95760203660031901126102c9576105ce6105c86102ce565b33611191565b005b346102c95760203660031901126102c9576001600160a01b036105f16102ce565b16600052600960205260406000205463ffffffff908181116106195760209160405191168152f35b604490604051906306dfcc6560e41b8252602060048301526024820152fd5b346102c95760203660031901126102c957602061042c6106566102ce565b6001600160a01b031660009081526020819052604090205490565b346102c95760203660031901126102c9576001600160a01b036106926102ce565b1660005260076020526020604060002054604051908152f35b346102c9576000806003193601126102c657610749906106ea7f0000000000000000000000000000000000000000000000000000000000000000611724565b906107147f0000000000000000000000000000000000000000000000000000000000000000611825565b906040519161072283610d99565b818352610757602091604051968796600f60f81b885260e0602089015260e088019061018c565b90868203604088015261018c565b904660608601523060808601528260a086015284820360c0860152602080855193848152019401925b82811061078f57505050500390f35b835185528695509381019392810192600101610780565b346102c95760203660031901126102c9576004356107c343611063565b9065ffffffffffff9182811682101561089e57506107e090611063565b600a54906000908260058111610842575b506107fc9350611569565b806108195750602060005b6040516001600160d01b039091168152f35b610824602091611095565b600a600052600080516020611e82833981519152015460301c610807565b909261084d82611429565b8203918211610899576107fc94600a6000528083600080516020611e82833981519152015416908516106000146108875750915b386107f1565b929150610893906110a4565b90610881565b610d12565b604051637669fc0f60e11b8152600481019290925265ffffffffffff166024820152604490fd5b346102c95760003660031901126102c95760206108e143611063565b65ffffffffffff60405191168152f35b346102c9576000806003193601126102c65760405190806004549061091582610d28565b8085529160209160019182811690811561029957506001146109415761023d8661023181880382610ded565b9350600484527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b838510610986575050505081016020016102318261023d38610221565b8054868601840152938201938101610969565b346102c95760203660031901126102c9576001600160a01b036109ba6102ce565b166000526009602052602060018060d01b036109d9604060002061125b565b16604051908152f35b346102c95760403660031901126102c9576103206109fe6102ce565b6024359033610e37565b6064359060ff821682036102c957565b6084359060ff821682036102c957565b346102c95760c03660031901126102c957610a416102ce565b60443590602435610a50610a08565b834211610ad857610acc6105ce94610ad3926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845260018060a01b0388166040840152866060840152608083015260808252610ab482610db5565b610ac760a4359360843593519020611287565b6112ad565b91826112c5565b611191565b604051632341d78760e11b815260048101859052602490fd5b346102c95760e03660031901126102c957610b0a6102ce565b610b126102e4565b60443590606435610b21610a18565b814211610c0c576001600160a01b0385811660008181526007602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c99281019283529283019390935292861660608201526080810187905260a081019190915260c080820194909452928352610bc5929091610bb260e083610ded565b610ac760c4359360a43593519020611287565b6001600160a01b0384811690821603610be257506105ce9261131b565b6040516325c0072360e11b81526001600160a01b0391821660048201529084166024820152604490fd5b60405163313c898160e11b815260048101839052602490fd5b346102c95760403660031901126102c9576020610c74610c436102ce565b610c4b6102e4565b6001600160a01b0391821660009081526001855260408082209290931681526020919091522090565b54604051908152f35b346102c95760403660031901126102c957610c966102ce565b60243563ffffffff811681036102c957610ce6610cec91604093610cb8610e1e565b50610cc1610e1e565b506001600160a01b031660009081526009602052849020610ce0610e1e565b50611a22565b50611a50565b8151815165ffffffffffff1681526020918201516001600160d01b031691810191909152f35b634e487b7160e01b600052601160045260246000fd5b90600182811c92168015610d58575b6020831014610d4257565b634e487b7160e01b600052602260045260246000fd5b91607f1691610d37565b634e487b7160e01b600052604160045260246000fd5b6040810190811067ffffffffffffffff821117610d9457604052565b610d62565b6020810190811067ffffffffffffffff821117610d9457604052565b60a0810190811067ffffffffffffffff821117610d9457604052565b60c0810190811067ffffffffffffffff821117610d9457604052565b90601f8019910116810190811067ffffffffffffffff821117610d9457604052565b60405190610e1c82610d78565b565b60405190610e2b82610d78565b60006020838281520152565b6001600160a01b0380821694939291908515610f305782168015610f17576001600160a01b03821660009081526020819052604090205495848710610ee85784610e1c969703610e998460018060a01b03166000526000602052604060002090565b556001600160a01b0384166000908152602081815260409182902080548801905590518681527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3611aef565b60405163391434e360e21b81526001600160a01b03841660048201526024810188905260448101869052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061103a575b15610fa4577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261103481610dd1565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610f7b565b65ffffffffffff90818111611076571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b60001981019190821161089957565b906001820180921161089957565b908154906000918060058111611145575b50915b8281106110f5575050806110db575050600090565b6110e490611095565b906000526020600020015460301c90565b90918082169080831860011c8201809211610899578460005265ffffffffffff80836020600020015416908516106000146111335750915b906110c6565b92915061113f906110a4565b9061112d565b9061114f82611429565b8203918211610899578460005265ffffffffffff808360206000200154169084161060001461118057505b386110c3565b925061118b906110a4565b9161117a565b6001600160a01b03818116600081815260086020526040812080548685166001600160a01b031982168117909255610e1c9694169461120e9390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a46001600160a01b031660009081526020819052604090205490565b916115d2565b600a54806112225750600090565b8060001981011161089957600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c90565b805480611269575050600090565b60001991818381011161089957600052602060002001015460301c90565b604290611292610f49565b906040519161190160f01b8352600283015260228201522090565b916101dd93916112bc936118e5565b90929192611995565b6001600160a01b038116600090815260076020526040902080546001810190915590918190036112f3575050565b6040516301d4b62360e61b81526001600160a01b039092166004830152602482015260449150fd5b6001600160a01b0380821692919083156113b657821693841561139d57806113937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461137c60209560018060a01b03166000526001602052604060002090565b9060018060a01b0316600052602052604060002090565b55604051908152a3565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b906001600160a01b03808316156113b65781161561139d5761137c6114069260018060a01b03166000526001602052604060002090565b55565b8115611413570490565b634e487b7160e01b600052601260045260246000fd5b801561156357806114fc6114f56114eb6114e16114d76114cd6114c36114b960016101dd9a6000908b60801c80611557575b508060401c8061154a575b508060201c8061153d575b508060101c80611530575b508060081c80611523575b508060041c80611516575b508060021c80611509575b50821c611502575b811c1b6114b2818b611409565b0160011c90565b6114b2818a611409565b6114b28189611409565b6114b28188611409565b6114b28187611409565b6114b28186611409565b6114b28185611409565b8092611409565b90611a74565b81016114a5565b600291509101903861149d565b6004915091019038611492565b6008915091019038611487565b601091509101903861147c565b6020915091019038611471565b6040915091019038611466565b9150506080903861145b565b50600090565b905b82811061157757505090565b90918082169080831860011c820180921161089957600a60005265ffffffffffff8083600080516020611e82833981519152015416908516106000146115c05750915b9061156b565b9291506115cc906110a4565b906115ba565b6001600160a01b0380831693929190811690818514158061171b575b6115fa575b5050505050565b8161167f575b50508261160f575b80806115f3565b6001600160a01b031660009081526009602052604090207fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161165c916116569091611a86565b90611ab9565b604080516001600160d01b039384168152919092166020820152a2388080611608565b6001600160a01b0316600090815260096020526040902061169f84611a86565b6116a843611063565b6001600160d01b039182806116bc8661125b565b169116900392828411610899577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493611711926116f892611d9f565b6040805192851683529316602082015291829190820190565b0390a23880611600565b508315156115ee565b60ff81146117625760ff811690601f8211611750576040519161174683610d78565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b5060405160055481600061177583610d28565b8083529260209060019081811690811561180157506001146117a0575b50506101dd92500382610ded565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b8284106117e957506101dd9450505081016020013880611792565b855487850183015294850194869450928101926117ce565b915050602092506101dd94915060ff191682840152151560051b8201013880611792565b60ff81146118475760ff811690601f8211611750576040519161174683610d78565b5060405160065481600061185a83610d28565b8083529260209060019081811690811561180157506001146118845750506101dd92500382610ded565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b8284106118cd57506101dd9450505081016020013880611792565b855487850183015294850194869450928101926118b2565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161196957926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561195d5780516001600160a01b0381161561195457918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b6004111561197f57565b634e487b7160e01b600052602160045260246000fd5b61199e81611975565b806119a7575050565b6119b081611975565b600181036119ca5760405163f645eedf60e01b8152600490fd5b6119d381611975565b600281036119f45760405163fce698f760e01b815260048101839052602490fd5b80611a00600392611975565b14611a085750565b6040516335e2f38360e21b81526004810191909152602490fd5b8054821015611a3a5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b90604051611a5d81610d78565b915465ffffffffffff8116835260301c6020830152565b9080821015611a81575090565b905090565b6001600160d01b0390818111611a9a571690565b604490604051906306dfcc6560e41b825260d060048301526024820152fd5b90611ac343611063565b6001600160d01b03918280611ad78661125b565b1691160191821161089957611aeb92611d9f565b9091565b6001600160a01b03908116929181908415611b7b575b16908115611b33575b610e1c93600052600860205280604060002054169160005260406000205416906115d2565b611b3c83611a86565b93611b4643611063565b6001600160d01b03958680611b59611214565b169116900395861161089957610e1c95611b7291611c77565b50509350611b0e565b9050611b8683611a86565b90611b9043611063565b6001600160d01b03928380611ba3611214565b16911601928311610899578392611bb991611c77565b5050611b05565b600a5490600160401b821015610d94576001820180600a55821015611a3a57600a600052805160209091015160301b65ffffffffffff191665ffffffffffff9190911617600080516020611e8283398151915290910155565b8054600160401b811015610d9457611c3691600182018155611a22565b611c6157815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b600052600060045260246000fd5b600a54919291908115611d7557611cb0611cab611c9384611095565b600a600052600080516020611e828339815191520190565b611a50565b805165ffffffffffff8381169491168410611d635785602093611d2795611ceb611ce0865165ffffffffffff1690565b65ffffffffffff1690565b03611d2b5750611d00611c93611d1993611095565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b9050611d5e9150611d4b611d3d610e0f565b65ffffffffffff9092168252565b6001600160d01b03871681850152611bc0565b611d19565b604051632520601d60e01b8152600490fd5b611d999150611d85611d3d610e0f565b6001600160d01b0384166020820152611bc0565b60009190565b805492939291908215611e5d57611dc8611cab611dbb85611095565b8360005260206000200190565b90611dd9825165ffffffffffff1690565b65ffffffffffff84811691168110611d6357611d27946020948892611e07611ce0875165ffffffffffff1690565b03611e2a5750611d1992611e1d611d0092611095565b9060005260206000200190565b915050611d5e91611e4a611e3c610e0f565b65ffffffffffff9093168352565b6001600160d01b03881682860152611c19565b611d999250611e6d611e3c610e0f565b6001600160d01b0385166020830152611c1956fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a2646970667358221220ce3edbf977c67a3d789bb20295364e93ec92bc040203921b3fa25301460cd9ce64736f6c63430008180033c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000075a4a3dd457842fa07d22378d40df7e7a811be3000000000000000000000000000000000000000000000000000000000000002346697373696f6e20466f756e646174696f6e20476f7665726e616e636520546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044649534e00000000000000000000000000000000000000000000000000000000