[ { "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": [ { "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": "holder", "type": "address" } ], "name": "burnAll", "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": "mintSome", "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" } ]
610160604052348015610010575f80fd5b506040518060400160405280601181526020017f437573746f6d4e6174697665546f6b656e000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280601181526020017f437573746f6d4e6174697665546f6b656e0000000000000000000000000000008152506040518060400160405280600381526020017f434e540000000000000000000000000000000000000000000000000000000000815250335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361015b575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101529190610452565b60405180910390fd5b61016a8161023d60201b60201c565b50816004908161017a91906106a5565b50806005908161018a91906106a5565b5050506101a16006836102fe60201b90919060201c565b61012081815250506101bd6007826102fe60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506101fa61034b60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050610905565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60208351101561031f57610318836103a560201b60201c565b9050610345565b8261032f8361040a60201b60201c565b5f01908161033d91906106a5565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200161038a95949392919061079b565b60405160208183030381529060405280519060200120905090565b5f80829050601f815111156103f157826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016103e89190610852565b60405180910390fd5b8051816103fd9061089f565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61043c82610413565b9050919050565b61044c81610432565b82525050565b5f6020820190506104655f830184610443565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104e657607f821691505b6020821081036104f9576104f86104a2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261055b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610520565b6105658683610520565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105a96105a461059f8461057d565b610586565b61057d565b9050919050565b5f819050919050565b6105c28361058f565b6105d66105ce826105b0565b84845461052c565b825550505050565b5f90565b6105ea6105de565b6105f58184846105b9565b505050565b5b818110156106185761060d5f826105e2565b6001810190506105fb565b5050565b601f82111561065d5761062e816104ff565b61063784610511565b81016020851015610646578190505b61065a61065285610511565b8301826105fa565b50505b505050565b5f82821c905092915050565b5f61067d5f1984600802610662565b1980831691505092915050565b5f610695838361066e565b9150826002028217905092915050565b6106ae8261046b565b67ffffffffffffffff8111156106c7576106c6610475565b5b6106d182546104cf565b6106dc82828561061c565b5f60209050601f83116001811461070d575f84156106fb578287015190505b610705858261068a565b86555061076c565b601f19841661071b866104ff565b5f5b828110156107425784890151825560018201915060208501945060208101905061071d565b8683101561075f578489015161075b601f89168261066e565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b61078681610774565b82525050565b6107958161057d565b82525050565b5f60a0820190506107ae5f83018861077d565b6107bb602083018761077d565b6107c8604083018661077d565b6107d5606083018561078c565b6107e26080830184610443565b9695505050505050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6108248261046b565b61082e81856107ec565b935061083e8185602086016107fc565b6108478161080a565b840191505092915050565b5f6020820190508181035f83015261086a818461081a565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f6108968251610774565b80915050919050565b5f6108a982610872565b826108b38461087c565b90506108be8161088b565b925060208210156108fe576108f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610520565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051611f4d6109565f395f610d8c01525f610d5101525f61130701525f6112e601525f610a8801525f610ade01525f610b070152611f4d5ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c80637ecebe00116100a0578063a9059cbb1161006f578063a9059cbb146102d6578063d505accf14610306578063dd62ed3e14610322578063dfafc4c814610352578063f2fde38b1461035c57610114565b80637ecebe001461024657806384b0196e146102765780638da5cb5b1461029a57806395d89b41146102b857610114565b8063313ce567116100e7578063313ce567146101b45780633644e515146101d257806370a08231146101f0578063715018a6146102205780637e9d2ac11461022a57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f80fd5b610120610378565b60405161012d91906117bd565b60405180910390f35b610150600480360381019061014b919061186e565b610408565b60405161015d91906118c6565b60405180910390f35b61016e61042a565b60405161017b91906118ee565b60405180910390f35b61019e60048036038101906101999190611907565b610433565b6040516101ab91906118c6565b60405180910390f35b6101bc610461565b6040516101c99190611972565b60405180910390f35b6101da610469565b6040516101e791906119a3565b60405180910390f35b61020a600480360381019061020591906119bc565b610477565b60405161021791906118ee565b60405180910390f35b6102286104bd565b005b610244600480360381019061023f91906119bc565b6104d0565b005b610260600480360381019061025b91906119bc565b6104ed565b60405161026d91906118ee565b60405180910390f35b61027e6104fe565b6040516102919796959493929190611ae7565b60405180910390f35b6102a26105a3565b6040516102af9190611b69565b60405180910390f35b6102c06105ca565b6040516102cd91906117bd565b60405180910390f35b6102f060048036038101906102eb919061186e565b61065a565b6040516102fd91906118c6565b60405180910390f35b610320600480360381019061031b9190611bd6565b61067c565b005b61033c60048036038101906103379190611c73565b6107c1565b60405161034991906118ee565b60405180910390f35b61035a610843565b005b610376600480360381019061037191906119bc565b610866565b005b60606004805461038790611cde565b80601f01602080910402602001604051908101604052809291908181526020018280546103b390611cde565b80156103fe5780601f106103d5576101008083540402835291602001916103fe565b820191905f5260205f20905b8154815290600101906020018083116103e157829003601f168201915b5050505050905090565b5f806104126108ea565b905061041f8185856108f1565b600191505092915050565b5f600354905090565b5f8061043d6108ea565b905061044a858285610903565b610455858585610995565b60019150509392505050565b5f6012905090565b5f610472610a85565b905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104c5610b3b565b6104ce5f610bc2565b565b6104d8610b3b565b6104ea816104e583610477565b610c83565b50565b5f6104f782610d02565b9050919050565b5f6060805f805f606061050f610d48565b610517610d83565b46305f801b5f67ffffffffffffffff81111561053657610535611d0e565b5b6040519080825280602002602001820160405280156105645781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546105d990611cde565b80601f016020809104026020016040519081016040528092919081815260200182805461060590611cde565b80156106505780601f1061062757610100808354040283529160200191610650565b820191905f5260205f20905b81548152906001019060200180831161063357829003601f168201915b5050505050905090565b5f806106646108ea565b9050610671818585610995565b600191505092915050565b834211156106c157836040517f627913020000000000000000000000000000000000000000000000000000000081526004016106b891906118ee565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886106ef8c610dbe565b8960405160200161070596959493929190611d3b565b6040516020818303038152906040528051906020012090505f61072782610e11565b90505f61073682878787610e2a565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107aa57808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016107a1929190611d9a565b60405180910390fd5b6107b58a8a8a6108f1565b50505050505050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61084b610b3b565b6108646108566105a3565b678ac7230489e80000610e58565b565b61086e610b3b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108de575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108d59190611b69565b60405180910390fd5b6108e781610bc2565b50565b5f33905090565b6108fe8383836001610ed7565b505050565b5f61090e84846107c1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161097793929190611dc1565b60405180910390fd5b61098e84848484035f610ed7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a05575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109fc9190611b69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a75575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a6c9190611b69565b60405180910390fd5b610a808383836110a6565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610b0057507f000000000000000000000000000000000000000000000000000000000000000046145b15610b2d577f00000000000000000000000000000000000000000000000000000000000000009050610b38565b610b356112c2565b90505b90565b610b436108ea565b73ffffffffffffffffffffffffffffffffffffffff16610b616105a3565b73ffffffffffffffffffffffffffffffffffffffff1614610bc057610b846108ea565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610bb79190611b69565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf3575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610cea9190611b69565b60405180910390fd5b610cfe825f836110a6565b5050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610d7e60067f000000000000000000000000000000000000000000000000000000000000000061135790919063ffffffff16565b905090565b6060610db960077f000000000000000000000000000000000000000000000000000000000000000061135790919063ffffffff16565b905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610e23610e1d610a85565b83611404565b9050919050565b5f805f80610e3a88888888611444565b925092509250610e4a828261152b565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ec8575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ebf9190611b69565b60405180910390fd5b610ed35f83836110a6565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f47575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f3e9190611b69565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fb7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fae9190611b69565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156110a0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161109791906118ee565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f6578060035f8282546110ea9190611e23565b925050819055506111c6565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611180578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161117793929190611dc1565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120d578060035f8282540392505081905550611258565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112b591906118ee565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161133c959493929190611e56565b60405160208183030381529060405280519060200120905090565b606060ff5f1b83146113735761136c8361168d565b90506113fe565b81805461137f90611cde565b80601f01602080910402602001604051908101604052809291908181526020018280546113ab90611cde565b80156113f65780601f106113cd576101008083540402835291602001916113f6565b820191905f5260205f20905b8154815290600101906020018083116113d957829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611480575f600385925092509250611521565b5f6001888888886040515f81526020016040526040516114a39493929190611ea7565b6020604051602081039080840390855afa1580156114c3573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611514575f60015f801b93509350935050611521565b805f805f1b935093509350505b9450945094915050565b5f600381111561153e5761153d611eea565b5b82600381111561155157611550611eea565b5b0315611689576001600381111561156b5761156a611eea565b5b82600381111561157e5761157d611eea565b5b036115b5576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156115c9576115c8611eea565b5b8260038111156115dc576115db611eea565b5b0361162057805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161161791906118ee565b60405180910390fd5b60038081111561163357611632611eea565b5b82600381111561164657611645611eea565b5b0361168857806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161167f91906119a3565b60405180910390fd5b5b5050565b60605f611699836116ff565b90505f602067ffffffffffffffff8111156116b7576116b6611d0e565b5b6040519080825280601f01601f1916602001820160405280156116e95781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611744576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61178f8261174d565b6117998185611757565b93506117a9818560208601611767565b6117b281611775565b840191505092915050565b5f6020820190508181035f8301526117d58184611785565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61180a826117e1565b9050919050565b61181a81611800565b8114611824575f80fd5b50565b5f8135905061183581611811565b92915050565b5f819050919050565b61184d8161183b565b8114611857575f80fd5b50565b5f8135905061186881611844565b92915050565b5f8060408385031215611884576118836117dd565b5b5f61189185828601611827565b92505060206118a28582860161185a565b9150509250929050565b5f8115159050919050565b6118c0816118ac565b82525050565b5f6020820190506118d95f8301846118b7565b92915050565b6118e88161183b565b82525050565b5f6020820190506119015f8301846118df565b92915050565b5f805f6060848603121561191e5761191d6117dd565b5b5f61192b86828701611827565b935050602061193c86828701611827565b925050604061194d8682870161185a565b9150509250925092565b5f60ff82169050919050565b61196c81611957565b82525050565b5f6020820190506119855f830184611963565b92915050565b5f819050919050565b61199d8161198b565b82525050565b5f6020820190506119b65f830184611994565b92915050565b5f602082840312156119d1576119d06117dd565b5b5f6119de84828501611827565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611a1b816119e7565b82525050565b611a2a81611800565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a628161183b565b82525050565b5f611a738383611a59565b60208301905092915050565b5f602082019050919050565b5f611a9582611a30565b611a9f8185611a3a565b9350611aaa83611a4a565b805f5b83811015611ada578151611ac18882611a68565b9750611acc83611a7f565b925050600181019050611aad565b5085935050505092915050565b5f60e082019050611afa5f83018a611a12565b8181036020830152611b0c8189611785565b90508181036040830152611b208188611785565b9050611b2f60608301876118df565b611b3c6080830186611a21565b611b4960a0830185611994565b81810360c0830152611b5b8184611a8b565b905098975050505050505050565b5f602082019050611b7c5f830184611a21565b92915050565b611b8b81611957565b8114611b95575f80fd5b50565b5f81359050611ba681611b82565b92915050565b611bb58161198b565b8114611bbf575f80fd5b50565b5f81359050611bd081611bac565b92915050565b5f805f805f805f60e0888a031215611bf157611bf06117dd565b5b5f611bfe8a828b01611827565b9750506020611c0f8a828b01611827565b9650506040611c208a828b0161185a565b9550506060611c318a828b0161185a565b9450506080611c428a828b01611b98565b93505060a0611c538a828b01611bc2565b92505060c0611c648a828b01611bc2565b91505092959891949750929550565b5f8060408385031215611c8957611c886117dd565b5b5f611c9685828601611827565b9250506020611ca785828601611827565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cf557607f821691505b602082108103611d0857611d07611cb1565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c082019050611d4e5f830189611994565b611d5b6020830188611a21565b611d686040830187611a21565b611d7560608301866118df565b611d8260808301856118df565b611d8f60a08301846118df565b979650505050505050565b5f604082019050611dad5f830185611a21565b611dba6020830184611a21565b9392505050565b5f606082019050611dd45f830186611a21565b611de160208301856118df565b611dee60408301846118df565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e2d8261183b565b9150611e388361183b565b9250828201905080821115611e5057611e4f611df6565b5b92915050565b5f60a082019050611e695f830188611994565b611e766020830187611994565b611e836040830186611994565b611e9060608301856118df565b611e9d6080830184611a21565b9695505050505050565b5f608082019050611eba5f830187611994565b611ec76020830186611963565b611ed46040830185611994565b611ee16060830184611994565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea26469706673582212208b14ae840bdf8c0d8d64202c8064a610b66a60b0deb4db1f8c7ce84b8b0745dc64736f6c634300081a0033