[ { "inputs": [ { "internalType": "address", "name": "initialOwner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "uint256", "name": "initialMint_", "type": "uint256" }, { "internalType": "address", "name": "faucetSupplier_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": [], "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": 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": [ { "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": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "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": "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": "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": [], "name": "renounceOwnership", "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101806040523480156200001257600080fd5b50604051620030d7380380620030d7833981810160405281019062000038919062000930565b84806040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250888888816003908162000084919062000c4b565b50806004908162000096919062000c4b565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200010e5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000105919062000d43565b60405180910390fd5b6200011f816200021060201b60201c565b5062000136600683620002d660201b90919060201c565b610120818152505062000154600782620002d660201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001936200032e60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050508260ff166101608160ff1681525050620001f286836200038b60201b60201c565b6200020481836200038b60201b60201c565b50505050505062000fc5565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000602083511015620002fc57620002f4836200041860201b60201c565b905062000328565b826200030e836200048560201b60201c565b60000190816200031f919062000c4b565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200037095949392919062000d8c565b60405160208183030381529060405280519060200120905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004005760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620003f7919062000d43565b60405180910390fd5b62000414600083836200048f60201b60201c565b5050565b600080829050601f815111156200046857826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200045f919062000e3b565b60405180910390fd5b805181620004769062000e91565b60001c1760001b915050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620004e5578060026000828254620004d8919062000f30565b92505081905550620005bb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000574578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200056b9392919062000f6b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000606578060026000828254039250508190555062000653565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006b2919062000fa8565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070082620006d3565b9050919050565b6200071281620006f3565b81146200071e57600080fd5b50565b600081519050620007328162000707565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200078d8262000742565b810181811067ffffffffffffffff82111715620007af57620007ae62000753565b5b80604052505050565b6000620007c4620006bf565b9050620007d2828262000782565b919050565b600067ffffffffffffffff821115620007f557620007f462000753565b5b620008008262000742565b9050602081019050919050565b60005b838110156200082d57808201518184015260208101905062000810565b60008484015250505050565b6000620008506200084a84620007d7565b620007b8565b9050828152602081018484840111156200086f576200086e6200073d565b5b6200087c8482856200080d565b509392505050565b600082601f8301126200089c576200089b62000738565b5b8151620008ae84826020860162000839565b91505092915050565b600060ff82169050919050565b620008cf81620008b7565b8114620008db57600080fd5b50565b600081519050620008ef81620008c4565b92915050565b6000819050919050565b6200090a81620008f5565b81146200091657600080fd5b50565b6000815190506200092a81620008ff565b92915050565b60008060008060008060c0878903121562000950576200094f620006c9565b5b60006200096089828a0162000721565b965050602087015167ffffffffffffffff811115620009845762000983620006ce565b5b6200099289828a0162000884565b955050604087015167ffffffffffffffff811115620009b657620009b5620006ce565b5b620009c489828a0162000884565b9450506060620009d789828a01620008de565b9350506080620009ea89828a0162000919565b92505060a0620009fd89828a0162000721565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a5d57607f821691505b60208210810362000a735762000a7262000a15565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000add7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a9e565b62000ae9868362000a9e565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b2c62000b2662000b2084620008f5565b62000b01565b620008f5565b9050919050565b6000819050919050565b62000b488362000b0b565b62000b6062000b578262000b33565b84845462000aab565b825550505050565b600090565b62000b7762000b68565b62000b8481848462000b3d565b505050565b5b8181101562000bac5762000ba060008262000b6d565b60018101905062000b8a565b5050565b601f82111562000bfb5762000bc58162000a79565b62000bd08462000a8e565b8101602085101562000be0578190505b62000bf862000bef8562000a8e565b83018262000b89565b50505b505050565b600082821c905092915050565b600062000c206000198460080262000c00565b1980831691505092915050565b600062000c3b838362000c0d565b9150826002028217905092915050565b62000c568262000a0a565b67ffffffffffffffff81111562000c725762000c7162000753565b5b62000c7e825462000a44565b62000c8b82828562000bb0565b600060209050601f83116001811462000cc3576000841562000cae578287015190505b62000cba858262000c2d565b86555062000d2a565b601f19841662000cd38662000a79565b60005b8281101562000cfd5784890151825560018201915060208501945060208101905062000cd6565b8683101562000d1d578489015162000d19601f89168262000c0d565b8355505b6001600288020188555050505b505050505050565b62000d3d81620006f3565b82525050565b600060208201905062000d5a600083018462000d32565b92915050565b6000819050919050565b62000d758162000d60565b82525050565b62000d8681620008f5565b82525050565b600060a08201905062000da3600083018862000d6a565b62000db2602083018762000d6a565b62000dc1604083018662000d6a565b62000dd0606083018562000d7b565b62000ddf608083018462000d32565b9695505050505050565b600082825260208201905092915050565b600062000e078262000a0a565b62000e13818562000de9565b935062000e258185602086016200080d565b62000e308162000742565b840191505092915050565b6000602082019050818103600083015262000e57818462000dfa565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000e88825162000d60565b80915050919050565b600062000e9e8262000e5f565b8262000eaa8462000e6a565b905062000eb78162000e7a565b9250602082101562000efa5762000ef57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000a9e565b831692505b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f3d82620008f5565b915062000f4a83620008f5565b925082820190508082111562000f655762000f6462000f01565b5b92915050565b600060608201905062000f82600083018662000d32565b62000f91602083018562000d7b565b62000fa0604083018462000d7b565b949350505050565b600060208201905062000fbf600083018462000d7b565b92915050565b60805160a05160c05160e051610100516101205161014051610160516120ac6200102b60003960006104a601526000610ea601526000610e6b015260006113bb0152600061139a01526000610b1501526000610b6b01526000610b9401526120ac6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad57806395d89b411161007157806395d89b41146102fe578063a9059cbb1461031c578063d505accf1461034c578063dd62ed3e14610368578063f2fde38b1461039857610121565b8063715018a61461026657806379cc6790146102705780637ecebe001461028c57806384b0196e146102bc5780638da5cb5b146102e057610121565b8063313ce567116100f4578063313ce567146101c25780633644e515146101e057806340c10f19146101fe57806342966c681461021a57806370a082311461023657610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103b4565b60405161013b91906118a8565b60405180910390f35b61015e60048036038101906101599190611963565b610446565b60405161016b91906119be565b60405180910390f35b61017c610469565b60405161018991906119e8565b60405180910390f35b6101ac60048036038101906101a79190611a03565b610473565b6040516101b991906119be565b60405180910390f35b6101ca6104a2565b6040516101d79190611a72565b60405180910390f35b6101e86104ca565b6040516101f59190611aa6565b60405180910390f35b61021860048036038101906102139190611963565b6104d9565b005b610234600480360381019061022f9190611ac1565b6104ef565b005b610250600480360381019061024b9190611aee565b610503565b60405161025d91906119e8565b60405180910390f35b61026e61054b565b005b61028a60048036038101906102859190611963565b61055f565b005b6102a660048036038101906102a19190611aee565b61057f565b6040516102b391906119e8565b60405180910390f35b6102c4610591565b6040516102d79796959493929190611c23565b60405180910390f35b6102e861063b565b6040516102f59190611ca7565b60405180910390f35b610306610665565b60405161031391906118a8565b60405180910390f35b61033660048036038101906103319190611963565b6106f7565b60405161034391906119be565b60405180910390f35b61036660048036038101906103619190611d1a565b61071a565b005b610382600480360381019061037d9190611dbc565b610862565b60405161038f91906119e8565b60405180910390f35b6103b260048036038101906103ad9190611aee565b6108e9565b005b6060600380546103c390611e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef90611e2b565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b5050505050905090565b60008061045161096f565b905061045e818585610977565b600191505092915050565b6000600254905090565b60008061047e61096f565b905061048b858285610989565b610496858585610a1d565b60019150509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60006104d4610b11565b905090565b6104e1610bc8565b6104eb8282610c4f565b5050565b6105006104fa61096f565b82610cd1565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610553610bc8565b61055d6000610d53565b565b6105718261056b61096f565b83610989565b61057b8282610cd1565b5050565b600061058a82610e19565b9050919050565b6000606080600080600060606105a5610e62565b6105ad610e9d565b46306000801b600067ffffffffffffffff8111156105ce576105cd611e5c565b5b6040519080825280602002602001820160405280156105fc5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461067490611e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546106a090611e2b565b80156106ed5780601f106106c2576101008083540402835291602001916106ed565b820191906000526020600020905b8154815290600101906020018083116106d057829003601f168201915b5050505050905090565b60008061070261096f565b905061070f818585610a1d565b600191505092915050565b8342111561075f57836040517f6279130200000000000000000000000000000000000000000000000000000000815260040161075691906119e8565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861078e8c610ed8565b896040516020016107a496959493929190611e8b565b60405160208183030381529060405280519060200120905060006107c782610f2f565b905060006107d782878787610f49565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461084b57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610842929190611eec565b60405180910390fd5b6108568a8a8a610977565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108f1610bc8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109635760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161095a9190611ca7565b60405180910390fd5b61096c81610d53565b50565b600033905090565b6109848383836001610f79565b505050565b60006109958484610862565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a175781811015610a07578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109fe93929190611f15565b60405180910390fd5b610a1684848484036000610f79565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a8f5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a869190611ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b015760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610af89190611ca7565b60405180910390fd5b610b0c838383611150565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610b8d57507f000000000000000000000000000000000000000000000000000000000000000046145b15610bba577f00000000000000000000000000000000000000000000000000000000000000009050610bc5565b610bc2611375565b90505b90565b610bd061096f565b73ffffffffffffffffffffffffffffffffffffffff16610bee61063b565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d57610c1161096f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c449190611ca7565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cc15760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610cb89190611ca7565b60405180910390fd5b610ccd60008383611150565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d435760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d3a9190611ca7565b60405180910390fd5b610d4f82600083611150565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060610e9860067f000000000000000000000000000000000000000000000000000000000000000061140b90919063ffffffff16565b905090565b6060610ed360077f000000000000000000000000000000000000000000000000000000000000000061140b90919063ffffffff16565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b6000610f42610f3c610b11565b836114bb565b9050919050565b600080600080610f5b888888886114fc565b925092509250610f6b82826115f0565b829350505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610feb5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610fe29190611ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361105d5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110549190611ca7565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561114a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161114191906119e8565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111a25780600260008282546111969190611f7b565b92505081905550611275565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561122e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161122593929190611f15565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112be578060026000828254039250508190555061130b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136891906119e8565b60405180910390a3505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016113f0959493929190611faf565b60405160208183030381529060405280519060200120905090565b606060ff60001b83146114285761142183611754565b90506114b5565b81805461143490611e2b565b80601f016020809104026020016040519081016040528092919081815260200182805461146090611e2b565b80156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c111561153c5760006003859250925092506115e6565b6000600188888888604051600081526020016040526040516115619493929190612002565b6020604051602081039080840390855afa158015611583573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115d757600060016000801b935093509350506115e6565b8060008060001b935093509350505b9450945094915050565b6000600381111561160457611603612047565b5b82600381111561161757611616612047565b5b0315611750576001600381111561163157611630612047565b5b82600381111561164457611643612047565b5b0361167b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561168f5761168e612047565b5b8260038111156116a2576116a1612047565b5b036116e7578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016116de91906119e8565b60405180910390fd5b6003808111156116fa576116f9612047565b5b82600381111561170d5761170c612047565b5b0361174f57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016117469190611aa6565b60405180910390fd5b5b5050565b60606000611761836117c8565b90506000602067ffffffffffffffff8111156117805761177f611e5c565b5b6040519080825280601f01601f1916602001820160405280156117b25781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f81111561180f576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611852578082015181840152602081019050611837565b60008484015250505050565b6000601f19601f8301169050919050565b600061187a82611818565b6118848185611823565b9350611894818560208601611834565b61189d8161185e565b840191505092915050565b600060208201905081810360008301526118c2818461186f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118fa826118cf565b9050919050565b61190a816118ef565b811461191557600080fd5b50565b60008135905061192781611901565b92915050565b6000819050919050565b6119408161192d565b811461194b57600080fd5b50565b60008135905061195d81611937565b92915050565b6000806040838503121561197a576119796118ca565b5b600061198885828601611918565b92505060206119998582860161194e565b9150509250929050565b60008115159050919050565b6119b8816119a3565b82525050565b60006020820190506119d360008301846119af565b92915050565b6119e28161192d565b82525050565b60006020820190506119fd60008301846119d9565b92915050565b600080600060608486031215611a1c57611a1b6118ca565b5b6000611a2a86828701611918565b9350506020611a3b86828701611918565b9250506040611a4c8682870161194e565b9150509250925092565b600060ff82169050919050565b611a6c81611a56565b82525050565b6000602082019050611a876000830184611a63565b92915050565b6000819050919050565b611aa081611a8d565b82525050565b6000602082019050611abb6000830184611a97565b92915050565b600060208284031215611ad757611ad66118ca565b5b6000611ae58482850161194e565b91505092915050565b600060208284031215611b0457611b036118ca565b5b6000611b1284828501611918565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611b5081611b1b565b82525050565b611b5f816118ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611b9a8161192d565b82525050565b6000611bac8383611b91565b60208301905092915050565b6000602082019050919050565b6000611bd082611b65565b611bda8185611b70565b9350611be583611b81565b8060005b83811015611c16578151611bfd8882611ba0565b9750611c0883611bb8565b925050600181019050611be9565b5085935050505092915050565b600060e082019050611c38600083018a611b47565b8181036020830152611c4a818961186f565b90508181036040830152611c5e818861186f565b9050611c6d60608301876119d9565b611c7a6080830186611b56565b611c8760a0830185611a97565b81810360c0830152611c998184611bc5565b905098975050505050505050565b6000602082019050611cbc6000830184611b56565b92915050565b611ccb81611a56565b8114611cd657600080fd5b50565b600081359050611ce881611cc2565b92915050565b611cf781611a8d565b8114611d0257600080fd5b50565b600081359050611d1481611cee565b92915050565b600080600080600080600060e0888a031215611d3957611d386118ca565b5b6000611d478a828b01611918565b9750506020611d588a828b01611918565b9650506040611d698a828b0161194e565b9550506060611d7a8a828b0161194e565b9450506080611d8b8a828b01611cd9565b93505060a0611d9c8a828b01611d05565b92505060c0611dad8a828b01611d05565b91505092959891949750929550565b60008060408385031215611dd357611dd26118ca565b5b6000611de185828601611918565b9250506020611df285828601611918565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e4357607f821691505b602082108103611e5657611e55611dfc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c082019050611ea06000830189611a97565b611ead6020830188611b56565b611eba6040830187611b56565b611ec760608301866119d9565b611ed460808301856119d9565b611ee160a08301846119d9565b979650505050505050565b6000604082019050611f016000830185611b56565b611f0e6020830184611b56565b9392505050565b6000606082019050611f2a6000830186611b56565b611f3760208301856119d9565b611f4460408301846119d9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611f868261192d565b9150611f918361192d565b9250828201905080821115611fa957611fa8611f4c565b5b92915050565b600060a082019050611fc46000830188611a97565b611fd16020830187611a97565b611fde6040830186611a97565b611feb60608301856119d9565b611ff86080830184611b56565b9695505050505050565b60006080820190506120176000830187611a97565b6120246020830186611a63565b6120316040830185611a97565b61203e6060830184611a97565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212203c7860247b5026aa8b7740d2a27cb18bd3f473db41fdc3454934a1a7e717638964736f6c634300081400330000000000000000000000006e7776b2d2ebc68a9d9c4df983479242b69ae70600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000d8bfe9eb0004b3b15a90647af82f179fe329fb9d000000000000000000000000000000000000000000000000000000000000000c436f70706572782055534454000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000