[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "taxHandlerAddress", "type": "address" }, { "internalType": "address", "name": "treasuryHandlerAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": false, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "currentDelegate", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "delegatee", "type": "address" }, { "indexed": false, "internalType": "uint224", "name": "oldVotes", "type": "uint224" }, { "indexed": false, "internalType": "uint224", "name": "newVotes", "type": "uint224" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "TaxHandlerChanged", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "TreasuryHandlerChanged", "type": "event" }, { "inputs": [], "name": "DELEGATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "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": "amount", "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": "", "type": "address" }, { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "internalType": "uint32", "name": "blockNumber", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": "", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "blockNumber", "type": "uint32" } ], "name": "getVotesAtBlock", "outputs": [ { "internalType": "uint224", "name": "", "type": "uint224" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "taxHandlerAddress", "type": "address" } ], "name": "setTaxHandler", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasuryHandlerAddress", "type": "address" } ], "name": "setTreasuryHandler", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxHandler", "outputs": [ { "internalType": "contract ITaxHandler", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasuryHandler", "outputs": [ { "internalType": "contract ITreasuryHandler", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002322380380620023228339810160408190526200003491620002ff565b6200003f336200011f565b8351620000549060099060208701906200016f565b5082516200006a90600a9060208601906200016f565b50600780546001600160a01b038085166001600160a01b0319928316179092556008805492841692909116919091179055620000ad69021e19e0c9bab240000090565b60016000336001600160a01b03168152602081019190915260400160002055336001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69021e19e0c9bab240000060405190815260200160405180910390a350505050620003cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200017d906200038e565b90600052602060002090601f016020900481019282620001a15760008555620001ec565b82601f10620001bc57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001ec578251825591602001919060010190620001cf565b50620001fa929150620001fe565b5090565b5b80821115620001fa5760008155600101620001ff565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023d57600080fd5b81516001600160401b03808211156200025a576200025a62000215565b604051601f8301601f19908116603f0116810190828211818310171562000285576200028562000215565b81604052838152602092508683858801011115620002a257600080fd5b600091505b83821015620002c65785820183015181830184015290820190620002a7565b83821115620002d85760008385830101525b9695505050505050565b80516001600160a01b0381168114620002fa57600080fd5b919050565b600080600080608085870312156200031657600080fd5b84516001600160401b03808211156200032e57600080fd5b6200033c888389016200022b565b955060208701519150808211156200035357600080fd5b5062000362878288016200022b565b9350506200037360408601620002e2565b91506200038360608601620002e2565b905092959194509250565b600181811c90821680620003a357607f821691505b60208210811415620003c557634e487b7160e01b600052602260045260246000fd5b50919050565b611f4780620003db6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e14610420578063e7a324dc14610459578063f1127ed814610480578063f2fde38b146104e857600080fd5b8063a9059cbb146103e7578063a9373b7b146103fa578063c3cda5201461040d57600080fd5b80637ecebe00116100d35780637ecebe001461039b5780638da5cb5b146103bb57806395d89b41146103cc578063a457c2d7146103d457600080fd5b80636fcfff451461032f57806370a082311461036a578063715018a61461039357600080fd5b806323b872dd11610166578063395093511161014057806339509351146102cb578063488d4a51146102de578063587cde1e146102f35780635c19a95c1461031c57600080fd5b806323b872dd1461027e578063271a452914610291578063313ce567146102bc57600080fd5b80631788963311610197578063178896331461022a57806318160ddd1461023d57806320606b701461025757600080fd5b806306fdde03146101be578063095ea7b3146101dc57806312280ba8146101ff575b600080fd5b6101c66104fb565b6040516101d39190611bfa565b60405180910390f35b6101ef6101ea366004611c6b565b61058d565b60405190151581526020016101d3565b600754610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101d3565b600854610212906001600160a01b031681565b69021e19e0c9bab24000005b6040519081526020016101d3565b6102497f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6101ef61028c366004611c95565b6105a4565b6102a461029f366004611cd1565b61068e565b6040516001600160e01b0390911681526020016101d3565b604051600981526020016101d3565b6101ef6102d9366004611c6b565b610968565b6102f16102ec366004611d11565b6109a4565b005b610212610301366004611d11565b6003602052600090815260409020546001600160a01b031681565b6102f161032a366004611d11565b610a6c565b61035561033d366004611d11565b60056020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101d3565b610249610378366004611d11565b6001600160a01b031660009081526001602052604090205490565b6102f1610a79565b6102496103a9366004611d11565b60046020526000908152604090205481565b6000546001600160a01b0316610212565b6101c6610adf565b6101ef6103e2366004611c6b565b610aee565b6101ef6103f5366004611c6b565b610bc5565b6102f1610408366004611d11565b610bd2565b6102f161041b366004611d33565b610c93565b61024961042e366004611d93565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102497fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6104c461048e366004611cd1565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160e01b031682565b6040805163ffffffff90931683526001600160e01b039091166020830152016101d3565b6102f16104f6366004611d11565b610fed565b60606009805461050a90611dc6565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611dc6565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b5050505050905090565b600061059a3384846110cc565b5060015b92915050565b60006105b1848484611227565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156106765760405162461bcd60e51b815260206004820152604960248201527f464c4f4b493a7472616e7366657246726f6d3a414c4c4f57414e43455f45584360448201527f45454445443a205472616e7366657220616d6f756e742065786365656473206160648201527f6c6c6f77616e63652e0000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b61068385338584036110cc565b506001949350505050565b6000438263ffffffff16106107315760405162461bcd60e51b815260206004820152604e60248201527f464c4f4b493a676574566f7465734174426c6f636b3a4655545552455f424c4f60448201527f434b3a2043616e6e6f742067657420766f746573206174206120626c6f636b2060648201527f696e20746865206675747572652e000000000000000000000000000000000000608482015260a40161066d565b6001600160a01b03831660009081526005602052604090205463ffffffff168061075f57600091505061059e565b6001600160a01b038416600090815260066020526040812063ffffffff85169161078a600185611e17565b63ffffffff908116825260208201929092526040016000205416116107fe576001600160a01b0384166000908152600660205260408120906107cd600184611e17565b63ffffffff16815260208101919091526040016000205464010000000090046001600160e01b0316915061059e9050565b6001600160a01b038416600090815260066020908152604080832083805290915290205463ffffffff8085169116111561083c57600091505061059e565b60008061084a600184611e17565b90505b8163ffffffff168163ffffffff161115610922576000600261086f8484611e17565b6108799190611e3c565b6108839083611e17565b6001600160a01b038816600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252548084168083526401000000009091046001600160e01b03169282019290925292935090881614156108f35760200151945061059e9350505050565b805163ffffffff8089169116101561090d5781935061091b565b610918600183611e17565b92505b505061084d565b506001600160a01b038516600090815260066020908152604080832063ffffffff909416835292905220546001600160e01b036401000000009091041691505092915050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161059a91859061099f908690611e6d565b6110cc565b6000546001600160a01b031633146109fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b600780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff1983168117909355604080519190921680825260208201939093527ed910c9481701ba32afe0c247572aaece27072f230c8ec769bf245fc0b38de691015b60405180910390a15050565b610a7633826117c2565b50565b6000546001600160a01b03163314610ad35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b610add6000611861565b565b6060600a805461050a90611dc6565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610bae5760405162461bcd60e51b815260206004820152605760248201527f464c4f4b493a6465637265617365416c6c6f77616e63653a414c4c4f57414e4360448201527f455f554e444552464c4f573a205375627472616374696f6e20726573756c747360648201527f20696e207375622d7a65726f20616c6c6f77616e63652e000000000000000000608482015260a40161066d565b610bbb33858584036110cc565b5060019392505050565b600061059a338484611227565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b600880546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff1983168117909355604080519190921680825260208201939093527f1bf87992a35ee29395ab494f9adb9a500a7fa60c3082cba0ef02701bb35900d99101610a60565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610cbe6104fb565b8051602091820120604080518084019490945283810191909152466060840152306080808501919091528151808503909101815260a0840182528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08501526001600160a01b038b1660e085015261010084018a90526101208085018a90528251808603909101815261014085019092528151919092012061190160f01b61016084015261016283018290526101828301819052909250906000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610def573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e9e5760405162461bcd60e51b815260206004820152604660248201527f464c4f4b493a64656c656761746542795369673a494e56414c49445f5349474e60448201527f41545552453a205265636569766564207369676e61747572652077617320696e60648201527f76616c69642e0000000000000000000000000000000000000000000000000000608482015260a40161066d565b87421115610f3a5760405162461bcd60e51b815260206004820152604660248201527f464c4f4b493a64656c656761746542795369673a455850495245445f5349474e60448201527f41545552453a205265636569766564207369676e61747572652068617320657860648201527f70697265642e0000000000000000000000000000000000000000000000000000608482015260a40161066d565b6001600160a01b0381166000908152600460205260408120805491610f5e83611e85565b919050558914610fd65760405162461bcd60e51b815260206004820152603e60248201527f464c4f4b493a64656c656761746542795369673a494e56414c49445f4e4f4e4360448201527f453a205265636569766564206e6f6e63652077617320696e76616c69642e0000606482015260840161066d565b610fe0818b6117c2565b505050505b505050505050565b6000546001600160a01b031633146110475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b6001600160a01b0381166110c35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161066d565b610a7681611861565b6001600160a01b0383166111485760405162461bcd60e51b815260206004820152603f60248201527f464c4f4b493a5f617070726f76653a4f574e45525f5a45524f3a2043616e6e6f60448201527f7420617070726f766520666f7220746865207a65726f20616464726573732e00606482015260840161066d565b6001600160a01b0382166111c6576040805162461bcd60e51b81526020600482015260248101919091527f464c4f4b493a5f617070726f76653a5350454e4445525f5a45524f3a2043616e60448201527f6e6f7420617070726f766520746f20746865207a65726f20616464726573732e606482015260840161066d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112ad5760405162461bcd60e51b815260206004820152604160248201527f464c4f4b493a5f7472616e736665723a46524f4d5f5a45524f3a2043616e6e6f60448201527f74207472616e736665722066726f6d20746865207a65726f20616464726573736064820152601760f91b608482015260a40161066d565b6001600160a01b0382166113295760405162461bcd60e51b815260206004820152603d60248201527f464c4f4b493a5f7472616e736665723a544f5f5a45524f3a2043616e6e6f742060448201527f7472616e7366657220746f20746865207a65726f20616464726573732e000000606482015260840161066d565b600081116113c55760405162461bcd60e51b815260206004820152604760248201527f464c4f4b493a5f7472616e736665723a5a45524f5f414d4f554e543a2054726160448201527f6e7366657220616d6f756e74206d75737420626520677265617465722074686160648201527f6e207a65726f2e00000000000000000000000000000000000000000000000000608482015260a40161066d565b6001600160a01b0383166000908152600160205260409020548111156114795760405162461bcd60e51b815260206004820152604660248201527f464c4f4b493a5f7472616e736665723a494e53554646494349454e545f42414c60448201527f414e43453a205472616e7366657220616d6f756e74206578636565647320626160648201527f6c616e63652e0000000000000000000000000000000000000000000000000000608482015260a40161066d565b6008546040517fc6512cc10000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152604482018490529091169063c6512cc190606401600060405180830381600087803b1580156114e857600080fd5b505af11580156114fc573d6000803e3d6000fd5b50506007546040517fd7ad21ac0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905260009450909116915063d7ad21ac90606401602060405180830381865afa158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190611ea0565b905060006115a78284611eb9565b6001600160a01b0386166000908152600160205260408120805492935085929091906115d4908490611eb9565b90915550506001600160a01b03841660009081526001602052604081208054839290611601908490611e6d565b90915550506001600160a01b03808616600090815260036020526040808220548784168352912054611638929182169116836118be565b81156116e7576008546001600160a01b031660009081526001602052604081208054849290611668908490611e6d565b90915550506001600160a01b0380861660009081526003602052604080822054600854841683529120546116a1929182169116846118be565b6008546040518381526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6008546040517fe613b1cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301528681166024830152604482018690529091169063e613b1cd90606401600060405180830381600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117b391815260200190565b60405180910390a35050505050565b6001600160a01b038281166000818152600360208181526040808420805460018452948290205493835287871673ffffffffffffffffffffffffffffffffffffffff198616811790915581519586529390951690840181905293830191909152907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9060600160405180910390a161185b8284836118be565b50505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b031614156118dd57505050565b6001600160e01b0381166118f057505050565b6001600160a01b03831615611998576001600160a01b03831660009081526005602052604081205463ffffffff16908161192b576000611978565b6001600160a01b03851660009081526006602052604081209061194f600185611e17565b63ffffffff16815260208101919091526040016000205464010000000090046001600160e01b03165b905060006119868483611ed0565b905061199486848484611a41565b5050505b6001600160a01b03821615611a3c576001600160a01b03821660009081526005602052604081205463ffffffff1690816119d3576000611a20565b6001600160a01b0384166000908152600660205260408120906119f7600185611e17565b63ffffffff16815260208101919091526040016000205464010000000090046001600160e01b03165b90506000611a2e8483611ef0565b9050610fe585848484611a41565b505050565b4363ffffffff841615801590611a9957506001600160a01b038516600090815260066020526040812063ffffffff831691611a7d600188611e17565b63ffffffff908116825260208201929092526040016000205416145b15611b09576001600160a01b03851660009081526006602052604081208391611ac3600188611e17565b63ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611ba1565b60408051808201825263ffffffff80841682526001600160e01b0380861660208085019182526001600160a01b038b166000908152600682528681208b86168252909152949094209251935116640100000000029216919091179055611b70846001611f1b565b6001600160a01b0386166000908152600560205260409020805463ffffffff191663ffffffff929092169190911790555b604080516001600160a01b03871681526001600160e01b03858116602083015284168183015290517fda5a64c2947c0b7bf4d6e7bf736c6f84d9d1c5f991770f88bbeb3fe19c85a1349181900360600190a15050505050565b600060208083528351808285015260005b81811015611c2757858101830151858201604001528201611c0b565b81811115611c39576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611c6657600080fd5b919050565b60008060408385031215611c7e57600080fd5b611c8783611c4f565b946020939093013593505050565b600080600060608486031215611caa57600080fd5b611cb384611c4f565b9250611cc160208501611c4f565b9150604084013590509250925092565b60008060408385031215611ce457600080fd5b611ced83611c4f565b9150602083013563ffffffff81168114611d0657600080fd5b809150509250929050565b600060208284031215611d2357600080fd5b611d2c82611c4f565b9392505050565b60008060008060008060c08789031215611d4c57600080fd5b611d5587611c4f565b95506020870135945060408701359350606087013560ff81168114611d7957600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611da657600080fd5b611daf83611c4f565b9150611dbd60208401611c4f565b90509250929050565b600181811c90821680611dda57607f821691505b60208210811415611dfb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff83811690831681811015611e3457611e34611e01565b039392505050565b600063ffffffff80841680611e6157634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60008219821115611e8057611e80611e01565b500190565b6000600019821415611e9957611e99611e01565b5060010190565b600060208284031215611eb257600080fd5b5051919050565b600082821015611ecb57611ecb611e01565b500390565b60006001600160e01b0383811690831681811015611e3457611e34611e01565b60006001600160e01b03808316818516808303821115611f1257611f12611e01565b01949350505050565b600063ffffffff808316818516808303821115611f1257611f12611e0156fea164736f6c634300080b000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000004491c4c1d1bf636057eab66cd986da08f619bd56000000000000000000000000d2a64b48b33ff641058719d2b3fa0f9ee5c243680000000000000000000000000000000000000000000000000000000000000005464c4f4b490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005464c4f4b49000000000000000000000000000000000000000000000000000000