Loading
[ { "inputs": [], "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": [], "name": "MAXIMUM_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "amount", "type": "uint256" } ], "name": "burn", "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": [], "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" } ]
6101606040523480156200001257600080fd5b50336040518060400160405280601581526020017f4e657572616c20537461636b20466f7220576f726b0000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280601581526020017f4e657572616c20537461636b20466f7220576f726b00000000000000000000008152506040518060400160405280600481526020017f4e534657000000000000000000000000000000000000000000000000000000008152508160039081620000fe919062000997565b50806004908162000110919062000997565b505050620001296005836200026e60201b90919060201c565b6101208181525050620001476006826200026e60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505062000186620002c660201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620002395760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000230919062000ac3565b60405180910390fd5b6200024a816200032360201b60201c565b5062000268336a396c41bd9e54ada3800000620003e960201b60201c565b62000d82565b600060208351101562000294576200028c836200047660201b60201c565b9050620002c0565b82620002a683620004e360201b60201c565b6000019081620002b7919062000997565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200030895949392919062000b0c565b60405160208183030381529060405280519060200120905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200045e5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000455919062000ac3565b60405180910390fd5b6200047260008383620004ed60201b60201c565b5050565b600080829050601f81511115620004c657826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620004bd919062000bf8565b60405180910390fd5b805181620004d49062000c4e565b60001c1760001b915050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200054357806002600082825462000536919062000ced565b9250508190555062000619565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620005d2578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620005c99392919062000d28565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006645780600260008282540392505081905550620006b1565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000710919062000d65565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079f57607f821691505b602082108103620007b557620007b462000757565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200081f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e0565b6200082b8683620007e0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000878620008726200086c8462000843565b6200084d565b62000843565b9050919050565b6000819050919050565b620008948362000857565b620008ac620008a3826200087f565b848454620007ed565b825550505050565b600090565b620008c3620008b4565b620008d081848462000889565b505050565b5b81811015620008f857620008ec600082620008b9565b600181019050620008d6565b5050565b601f82111562000947576200091181620007bb565b6200091c84620007d0565b810160208510156200092c578190505b620009446200093b85620007d0565b830182620008d5565b50505b505050565b600082821c905092915050565b60006200096c600019846008026200094c565b1980831691505092915050565b600062000987838362000959565b9150826002028217905092915050565b620009a2826200071d565b67ffffffffffffffff811115620009be57620009bd62000728565b5b620009ca825462000786565b620009d7828285620008fc565b600060209050601f83116001811462000a0f5760008415620009fa578287015190505b62000a06858262000979565b86555062000a76565b601f19841662000a1f86620007bb565b60005b8281101562000a495784890151825560018201915060208501945060208101905062000a22565b8683101562000a69578489015162000a65601f89168262000959565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aab8262000a7e565b9050919050565b62000abd8162000a9e565b82525050565b600060208201905062000ada600083018462000ab2565b92915050565b6000819050919050565b62000af58162000ae0565b82525050565b62000b068162000843565b82525050565b600060a08201905062000b23600083018862000aea565b62000b32602083018762000aea565b62000b41604083018662000aea565b62000b50606083018562000afb565b62000b5f608083018462000ab2565b9695505050505050565b600082825260208201905092915050565b60005b8381101562000b9a57808201518184015260208101905062000b7d565b60008484015250505050565b6000601f19601f8301169050919050565b600062000bc4826200071d565b62000bd0818562000b69565b935062000be281856020860162000b7a565b62000bed8162000ba6565b840191505092915050565b6000602082019050818103600083015262000c14818462000bb7565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000c45825162000ae0565b80915050919050565b600062000c5b8262000c1c565b8262000c678462000c27565b905062000c748162000c37565b9250602082101562000cb75762000cb27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620007e0565b831692505b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cfa8262000843565b915062000d078362000843565b925082820190508082111562000d225762000d2162000cbe565b5b92915050565b600060608201905062000d3f600083018662000ab2565b62000d4e602083018562000afb565b62000d5d604083018462000afb565b949350505050565b600060208201905062000d7c600083018462000afb565b92915050565b60805160a05160c05160e051610100516101205161014051611fbf62000ddd6000396000610db901526000610d7e015260006112ce015260006112ad01526000610aaa01526000610b0001526000610b290152611fbf6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a257806395d89b411161007157806395d89b41146102d9578063a9059cbb146102f7578063d505accf14610327578063dd62ed3e14610343578063f2fde38b1461037357610116565b8063715018a61461025d5780637ecebe001461026757806384b0196e146102975780638da5cb5b146102bb57610116565b8063313ce567116100e9578063313ce567146101b75780633644e515146101d55780633d0c4924146101f357806342966c681461021157806370a082311461022d57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b61012361038f565b60405161013091906117bb565b60405180910390f35b610153600480360381019061014e9190611876565b610421565b60405161016091906118d1565b60405180910390f35b610171610444565b60405161017e91906118fb565b60405180910390f35b6101a1600480360381019061019c9190611916565b61044e565b6040516101ae91906118d1565b60405180910390f35b6101bf61047d565b6040516101cc9190611985565b60405180910390f35b6101dd610486565b6040516101ea91906119b9565b60405180910390f35b6101fb610495565b60405161020891906118fb565b60405180910390f35b61022b600480360381019061022691906119d4565b6104a4565b005b61024760048036038101906102429190611a01565b6104b8565b60405161025491906118fb565b60405180910390f35b610265610500565b005b610281600480360381019061027c9190611a01565b610514565b60405161028e91906118fb565b60405180910390f35b61029f610526565b6040516102b29796959493929190611b36565b60405180910390f35b6102c36105d0565b6040516102d09190611bba565b60405180910390f35b6102e16105fa565b6040516102ee91906117bb565b60405180910390f35b610311600480360381019061030c9190611876565b61068c565b60405161031e91906118d1565b60405180910390f35b610341600480360381019061033c9190611c2d565b6106af565b005b61035d60048036038101906103589190611ccf565b6107f7565b60405161036a91906118fb565b60405180910390f35b61038d60048036038101906103889190611a01565b61087e565b005b60606003805461039e90611d3e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90611d3e565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050505050905090565b60008061042c610904565b905061043981858561090c565b600191505092915050565b6000600254905090565b600080610459610904565b905061046685828561091e565b6104718585856109b2565b60019150509392505050565b60006012905090565b6000610490610aa6565b905090565b6a396c41bd9e54ada380000081565b6104b56104af610904565b82610b5d565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610508610bdf565b6105126000610c66565b565b600061051f82610d2c565b9050919050565b60006060806000806000606061053a610d75565b610542610db0565b46306000801b600067ffffffffffffffff81111561056357610562611d6f565b5b6040519080825280602002602001820160405280156105915781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461060990611d3e565b80601f016020809104026020016040519081016040528092919081815260200182805461063590611d3e565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050905090565b600080610697610904565b90506106a48185856109b2565b600191505092915050565b834211156106f457836040517f627913020000000000000000000000000000000000000000000000000000000081526004016106eb91906118fb565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107238c610deb565b8960405160200161073996959493929190611d9e565b604051602081830303815290604052805190602001209050600061075c82610e42565b9050600061076c82878787610e5c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107e057808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016107d7929190611dff565b60405180910390fd5b6107eb8a8a8a61090c565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610886610bdf565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108f85760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108ef9190611bba565b60405180910390fd5b61090181610c66565b50565b600033905090565b6109198383836001610e8c565b505050565b600061092a84846107f7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109ac578181101561099c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161099393929190611e28565b60405180910390fd5b6109ab84848484036000610e8c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a245760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a1b9190611bba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a965760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a8d9190611bba565b60405180910390fd5b610aa1838383611063565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610b2257507f000000000000000000000000000000000000000000000000000000000000000046145b15610b4f577f00000000000000000000000000000000000000000000000000000000000000009050610b5a565b610b57611288565b90505b90565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bcf5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610bc69190611bba565b60405180910390fd5b610bdb82600083611063565b5050565b610be7610904565b73ffffffffffffffffffffffffffffffffffffffff16610c056105d0565b73ffffffffffffffffffffffffffffffffffffffff1614610c6457610c28610904565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c5b9190611bba565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060610dab60057f000000000000000000000000000000000000000000000000000000000000000061131e90919063ffffffff16565b905090565b6060610de660067f000000000000000000000000000000000000000000000000000000000000000061131e90919063ffffffff16565b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b6000610e55610e4f610aa6565b836113ce565b9050919050565b600080600080610e6e8888888861140f565b925092509250610e7e8282611503565b829350505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610efe5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ef59190611bba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f705760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f679190611bba565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561105d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161105491906118fb565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110b55780600260008282546110a99190611e8e565b92505081905550611188565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611141578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161113893929190611e28565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d1578060026000828254039250508190555061121e565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161127b91906118fb565b60405180910390a3505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611303959493929190611ec2565b60405160208183030381529060405280519060200120905090565b606060ff60001b831461133b5761133483611667565b90506113c8565b81805461134790611d3e565b80601f016020809104026020016040519081016040528092919081815260200182805461137390611d3e565b80156113c05780601f10611395576101008083540402835291602001916113c0565b820191906000526020600020905b8154815290600101906020018083116113a357829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c111561144f5760006003859250925092506114f9565b6000600188888888604051600081526020016040526040516114749493929190611f15565b6020604051602081039080840390855afa158015611496573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ea57600060016000801b935093509350506114f9565b8060008060001b935093509350505b9450945094915050565b6000600381111561151757611516611f5a565b5b82600381111561152a57611529611f5a565b5b0315611663576001600381111561154457611543611f5a565b5b82600381111561155757611556611f5a565b5b0361158e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156115a2576115a1611f5a565b5b8260038111156115b5576115b4611f5a565b5b036115fa578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016115f191906118fb565b60405180910390fd5b60038081111561160d5761160c611f5a565b5b8260038111156116205761161f611f5a565b5b0361166257806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161165991906119b9565b60405180910390fd5b5b5050565b60606000611674836116db565b90506000602067ffffffffffffffff81111561169357611692611d6f565b5b6040519080825280601f01601f1916602001820160405280156116c55781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f811115611722576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176557808201518184015260208101905061174a565b60008484015250505050565b6000601f19601f8301169050919050565b600061178d8261172b565b6117978185611736565b93506117a7818560208601611747565b6117b081611771565b840191505092915050565b600060208201905081810360008301526117d58184611782565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061180d826117e2565b9050919050565b61181d81611802565b811461182857600080fd5b50565b60008135905061183a81611814565b92915050565b6000819050919050565b61185381611840565b811461185e57600080fd5b50565b6000813590506118708161184a565b92915050565b6000806040838503121561188d5761188c6117dd565b5b600061189b8582860161182b565b92505060206118ac85828601611861565b9150509250929050565b60008115159050919050565b6118cb816118b6565b82525050565b60006020820190506118e660008301846118c2565b92915050565b6118f581611840565b82525050565b600060208201905061191060008301846118ec565b92915050565b60008060006060848603121561192f5761192e6117dd565b5b600061193d8682870161182b565b935050602061194e8682870161182b565b925050604061195f86828701611861565b9150509250925092565b600060ff82169050919050565b61197f81611969565b82525050565b600060208201905061199a6000830184611976565b92915050565b6000819050919050565b6119b3816119a0565b82525050565b60006020820190506119ce60008301846119aa565b92915050565b6000602082840312156119ea576119e96117dd565b5b60006119f884828501611861565b91505092915050565b600060208284031215611a1757611a166117dd565b5b6000611a258482850161182b565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611a6381611a2e565b82525050565b611a7281611802565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611aad81611840565b82525050565b6000611abf8383611aa4565b60208301905092915050565b6000602082019050919050565b6000611ae382611a78565b611aed8185611a83565b9350611af883611a94565b8060005b83811015611b29578151611b108882611ab3565b9750611b1b83611acb565b925050600181019050611afc565b5085935050505092915050565b600060e082019050611b4b600083018a611a5a565b8181036020830152611b5d8189611782565b90508181036040830152611b718188611782565b9050611b8060608301876118ec565b611b8d6080830186611a69565b611b9a60a08301856119aa565b81810360c0830152611bac8184611ad8565b905098975050505050505050565b6000602082019050611bcf6000830184611a69565b92915050565b611bde81611969565b8114611be957600080fd5b50565b600081359050611bfb81611bd5565b92915050565b611c0a816119a0565b8114611c1557600080fd5b50565b600081359050611c2781611c01565b92915050565b600080600080600080600060e0888a031215611c4c57611c4b6117dd565b5b6000611c5a8a828b0161182b565b9750506020611c6b8a828b0161182b565b9650506040611c7c8a828b01611861565b9550506060611c8d8a828b01611861565b9450506080611c9e8a828b01611bec565b93505060a0611caf8a828b01611c18565b92505060c0611cc08a828b01611c18565b91505092959891949750929550565b60008060408385031215611ce657611ce56117dd565b5b6000611cf48582860161182b565b9250506020611d058582860161182b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d5657607f821691505b602082108103611d6957611d68611d0f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c082019050611db360008301896119aa565b611dc06020830188611a69565b611dcd6040830187611a69565b611dda60608301866118ec565b611de760808301856118ec565b611df460a08301846118ec565b979650505050505050565b6000604082019050611e146000830185611a69565b611e216020830184611a69565b9392505050565b6000606082019050611e3d6000830186611a69565b611e4a60208301856118ec565b611e5760408301846118ec565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e9982611840565b9150611ea483611840565b9250828201905080821115611ebc57611ebb611e5f565b5b92915050565b600060a082019050611ed760008301886119aa565b611ee460208301876119aa565b611ef160408301866119aa565b611efe60608301856118ec565b611f0b6080830184611a69565b9695505050505050565b6000608082019050611f2a60008301876119aa565b611f376020830186611976565b611f4460408301856119aa565b611f5160608301846119aa565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122096dd55a00bb289b11405cf0a3318635aa91ba6fe5c4dd13fc07abec3d3ae6d8a64736f6c63430008140033