[ { "inputs": [ { "internalType": "uint256", "name": "initialSupply_", "type": "uint256" }, { "internalType": "address", "name": "initialOwner_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "BlackListedAddress", "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": "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": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "MintExceededCap", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "NotBlackListedAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "RenounceOwnershipDisabled", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_address", "type": "address" } ], "name": "AddedToBlackList", "type": "event" }, { "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": "_blackListedUser", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_balance", "type": "uint256" } ], "name": "BlackFundsBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "BulkAddedToBlackList", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "BulkRemovedFromBlackList", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "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": "_address", "type": "address" } ], "name": "RemovedFromBlackList", "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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "addToBlackList", "outputs": [], "stateMutability": "nonpayable", "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": "_addresses", "type": "address[]" } ], "name": "bulkAddToBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "bulkRemoveFromBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_blackListedAddress", "type": "address" } ], "name": "burnBlackFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "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": "address", "name": "", "type": "address" } ], "name": "isBlackListed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "removeFromBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "pure", "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101606040523480156200001257600080fd5b506040516200200d3803806200200d8339810160408190526200003591620004bd565b806040518060400160405280600d81526020016c24a1a92ca822ac102a37b5b2b760991b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600d81526020016c24a1a92ca822ac102a37b5b2b760991b8152506040518060400160405280600481526020016309286a0b60e31b8152508160039081620000cb9190620005a2565b506004620000da8282620005a2565b50620000ec91508390506005620001e5565b61012052620000fd816006620001e5565b61014052815160208084019190912060e052815190820120610100524660a0526200018b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b038116620001c557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001d0816200021e565b50620001dd818362000270565b505062000706565b60006020835110156200020557620001fd83620002ae565b905062000218565b81620002128482620005a2565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200029c5760405163ec442f0560e01b815260006004820152602401620001bc565b620002aa60008383620002f1565b5050565b600080829050601f81511115620002dc578260405163305a27a960e01b8152600401620001bc91906200066e565b8051620002e982620006bf565b179392505050565b6001600160a01b038216158015906200034557506001600160a01b03831660009081526009602052604090205460ff16806200034557506001600160a01b03821660009081526009602052604090205460ff165b15620003785760405163b6a5252560e01b81526001600160a01b03808516600483015283166024820152604401620001bc565b620003858383836200038a565b505050565b6001600160a01b038316620003b9578060026000828254620003ad9190620006e4565b909155506200042d9050565b6001600160a01b038316600090815260208190526040902054818110156200040e5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620001bc565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200044b576002805482900390556200046a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004b091815260200190565b60405180910390a3505050565b60008060408385031215620004d157600080fd5b825160208401519092506001600160a01b0381168114620004f157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052757607f821691505b6020821081036200054857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000385576000816000526020600020601f850160051c81016020861015620005795750805b601f850160051c820191505b818110156200059a5782815560010162000585565b505050505050565b81516001600160401b03811115620005be57620005be620004fc565b620005d681620005cf845462000512565b846200054e565b602080601f8311600181146200060e5760008415620005f55750858301515b600019600386901b1c1916600185901b1785556200059a565b600085815260208120601f198616915b828110156200063f578886015182559484019460019091019084016200061e565b50858210156200065e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200069e5785810183015185820160400152820162000680565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620005485760001960209190910360031b1b16919050565b808201808211156200021857634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516118ac620007616000396000610dcd01526000610da001526000610cad01526000610c8501526000610be001526000610c0a01526000610c3401526118ac6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de57806395d89b4111610097578063d505accf11610071578063d505accf14610347578063dd62ed3e1461035a578063e47d606014610393578063f2fde38b146103b657600080fd5b806395d89b41146103195780639bcd9e2714610321578063a9059cbb1461033457600080fd5b8063715018a6146102a257806379cc6790146102aa5780637ecebe00146102bd578063800c0384146102d057806384b0196e146102e35780638da5cb5b146102fe57600080fd5b80633644e5151161014b57806342966c681161012557806342966c68146102405780634a49ac4c1461025357806354ac51ba1461026657806370a082311461027957600080fd5b80633644e5151461021057806340c10f1914610218578063417c73a71461022d57600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806323b872dd146101e6578063313ce567146101f957806332cb6b0c14610208575b600080fd5b61019b6103c9565b6040516101a8919061140d565b60405180910390f35b6101c46101bf366004611443565b61045b565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101c46101f436600461146d565b610475565b604051600381526020016101a8565b6101d8610499565b6101d86104b6565b61022b610226366004611443565b6104c5565b005b61022b61023b3660046114a9565b610564565b61022b61024e3660046114c4565b6105c7565b61022b6102613660046114a9565b6105d4565b61022b6102743660046114dd565b61062d565b6101d86102873660046114a9565b6001600160a01b031660009081526020819052604090205490565b61022b610728565b61022b6102b8366004611443565b610744565b6101d86102cb3660046114a9565b610759565b61022b6102de3660046114a9565b610777565b6102eb610825565b6040516101a89796959493929190611552565b6008546040516001600160a01b0390911681526020016101a8565b61019b61086b565b61022b61032f3660046114dd565b61087a565b6101c4610342366004611443565b610961565b61022b6103553660046115eb565b61096f565b6101d861036836600461165e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c46103a13660046114a9565b60096020526000908152604090205460ff1681565b61022b6103c43660046114a9565b610aa9565b6060600380546103d890611691565b80601f016020809104026020016040519081016040528092919081815260200182805461040490611691565b80156104515780601f1061042657610100808354040283529160200191610451565b820191906000526020600020905b81548152906001019060200180831161043457829003601f168201915b5050505050905090565b600033610469818585610ae4565b60019150505b92915050565b600033610483858285610af6565b61048e858585610b74565b506001949350505050565b6104a56003600a6117c5565b6104b390631dcd65006117d4565b81565b60006104c0610bd3565b905090565b6104cd610cfe565b6104d96003600a6117c5565b6104e790631dcd65006117d4565b816104f160025490565b6104fb91906117eb565b1115610556578061050b60025490565b61051591906117eb565b6105216003600a6117c5565b61052f90631dcd65006117d4565b604051630401d1b360e31b8152600481019290925260248201526044015b60405180910390fd5b6105608282610d2d565b5050565b61056c610cfe565b6001600160a01b038116600081815260096020908152604091829020805460ff1916600117905590519182527f83f4fb4e43c8e9d38b6fa4c441afe892be28f9724b9c128fb99dfee430f60e0891015b60405180910390a150565b6105d13382610d63565b50565b6105dc610cfe565b6001600160a01b038116600081815260096020908152604091829020805460ff1916905590519182527fa5d874c36615fb5b3b7b19ec879ee123ce071c81392af0dea8c60f4fcdf1864991016105bc565b610635610cfe565b60005b818110156106ea5760096000848484818110610656576106566117fe565b905060200201602081019061066b91906114a9565b6001600160a01b0316815260208101919091526040016000205460ff166106e2576001600960008585858181106106a4576106a46117fe565b90506020020160208101906106b991906114a9565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b600101610638565b507f487e70b4759d7a0d6f12ef18550b09fb7597f90ca488136dbc8f38794849359e828260405161071c929190611814565b60405180910390a15050565b6040516001623f026d60e01b0319815260040160405180910390fd5b61074f823383610af6565b6105608282610d63565b6001600160a01b03811660009081526007602052604081205461046f565b61077f610cfe565b6001600160a01b03811660009081526009602052604090205460ff166107c357604051637bbe20ed60e11b81526001600160a01b038216600482015260240161054d565b6001600160a01b0381166000908152602081905260409020546107e68282610d63565b604080516001600160a01b0384168152602081018390527f3ad16bd4b5226c96c69d4d403710ee107ebb87e7d5d2675fe60a5256cc19d112910161071c565b600060608060008060006060610839610d99565b610841610dc6565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546103d890611691565b610882610cfe565b60005b8181101561092f57600960008484848181106108a3576108a36117fe565b90506020020160208101906108b891906114a9565b6001600160a01b0316815260208101919091526040016000205460ff161561092757600960008484848181106108f0576108f06117fe565b905060200201602081019061090591906114a9565b6001600160a01b031681526020810191909152604001600020805460ff191690555b600101610885565b507f451a9c6b25a72a033ce772d2733262fb84829f7b734677860ed37ec34823c23c828260405161071c929190611814565b600033610469818585610b74565b834211156109935760405163313c898160e11b81526004810185905260240161054d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109e08c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a3b82610df3565b90506000610a4b82878787610e20565b9050896001600160a01b0316816001600160a01b031614610a92576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161054d565b610a9d8a8a8a610ae4565b50505050505050505050565b610ab1610cfe565b6001600160a01b038116610adb57604051631e4fbdf760e01b81526000600482015260240161054d565b6105d181610e4e565b610af18383836001610ea0565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b6e5781811015610b5f57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161054d565b610b6e84848484036000610ea0565b50505050565b6001600160a01b038316610b9e57604051634b637e8f60e11b81526000600482015260240161054d565b6001600160a01b038216610bc85760405163ec442f0560e01b81526000600482015260240161054d565b610af1838383610f75565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c2c57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c5657507f000000000000000000000000000000000000000000000000000000000000000090565b6104c0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b03163314610d2b5760405163118cdaa760e01b815233600482015260240161054d565b565b6001600160a01b038216610d575760405163ec442f0560e01b81526000600482015260240161054d565b61056060008383610f75565b6001600160a01b038216610d8d57604051634b637e8f60e11b81526000600482015260240161054d565b61056082600083610f75565b60606104c07f00000000000000000000000000000000000000000000000000000000000000006005611003565b60606104c07f00000000000000000000000000000000000000000000000000000000000000006006611003565b600061046f610e00610bd3565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610e32888888886110ae565b925092509250610e42828261117d565b50909695505050505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416610eca5760405163e602df0560e01b81526000600482015260240161054d565b6001600160a01b038316610ef457604051634a1406b160e11b81526000600482015260240161054d565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b6e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f6791815260200190565b60405180910390a350505050565b6001600160a01b03821615801590610fc757506001600160a01b03831660009081526009602052604090205460ff1680610fc757506001600160a01b03821660009081526009602052604090205460ff165b15610ff85760405163b6a5252560e01b81526001600160a01b0380851660048301528316602482015260440161054d565b610af1838383611236565b606060ff831461101d5761101683611360565b905061046f565b81805461102990611691565b80601f016020809104026020016040519081016040528092919081815260200182805461105590611691565b80156110a25780601f10611077576101008083540402835291602001916110a2565b820191906000526020600020905b81548152906001019060200180831161108557829003601f168201915b5050505050905061046f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e95750600091506003905082611173565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561113d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661116957506000925060019150829050611173565b9250600091508190505b9450945094915050565b600082600381111561119157611191611860565b0361119a575050565b60018260038111156111ae576111ae611860565b036111cc5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111e0576111e0611860565b036112015760405163fce698f760e01b81526004810182905260240161054d565b600382600381111561121557611215611860565b03610560576040516335e2f38360e21b81526004810182905260240161054d565b6001600160a01b03831661126157806002600082825461125691906117eb565b909155506112d39050565b6001600160a01b038316600090815260208190526040902054818110156112b45760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161054d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166112ef5760028054829003905561130e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161135391815260200190565b60405180910390a3505050565b6060600061136d8361139f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561046f57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b818110156113ed576020818501810151868301820152016113d1565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061142060208301846113c7565b9392505050565b80356001600160a01b038116811461143e57600080fd5b919050565b6000806040838503121561145657600080fd5b61145f83611427565b946020939093013593505050565b60008060006060848603121561148257600080fd5b61148b84611427565b925061149960208501611427565b9150604084013590509250925092565b6000602082840312156114bb57600080fd5b61142082611427565b6000602082840312156114d657600080fd5b5035919050565b600080602083850312156114f057600080fd5b823567ffffffffffffffff8082111561150857600080fd5b818501915085601f83011261151c57600080fd5b81358181111561152b57600080fd5b8660208260051b850101111561154057600080fd5b60209290920196919550909350505050565b60ff60f81b881681526000602060e0602084015261157360e084018a6113c7565b8381036040850152611585818a6113c7565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156115d9578351835292840192918401916001016115bd565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561160657600080fd5b61160f88611427565b965061161d60208901611427565b95506040880135945060608801359350608088013560ff8116811461164157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561167157600080fd5b61167a83611427565b915061168860208401611427565b90509250929050565b600181811c908216806116a557607f821691505b6020821081036116c557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561171c578160001904821115611702576117026116cb565b8085161561170f57918102915b93841c93908002906116e6565b509250929050565b6000826117335750600161046f565b816117405750600061046f565b816001811461175657600281146117605761177c565b600191505061046f565b60ff841115611771576117716116cb565b50506001821b61046f565b5060208310610133831016604e8410600b841016171561179f575081810a61046f565b6117a983836116e1565b80600019048211156117bd576117bd6116cb565b029392505050565b600061142060ff841683611724565b808202811582820484141761046f5761046f6116cb565b8082018082111561046f5761046f6116cb565b634e487b7160e01b600052603260045260246000fd5b60208082528181018390526000908460408401835b86811015611855576001600160a01b0361184284611427565b1682529183019190830190600101611829565b509695505050505050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220fcf1c8df430a36b187b21906cc1be7cd531c3ba95442c7c9d020b30efda0efa264736f6c634300081600330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810a36236b38282153bb3cb1b3192bb36bef7a68