[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": [ { "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": [ { "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "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" } ]
608060405234801561001057600080fd5b50336040518060400160405280600b81526020017f41696363656c65726174650000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4149434300000000000000000000000000000000000000000000000000000000815250816003908161008d919061072b565b50806004908161009d919061072b565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101125760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610109919061083e565b60405180910390fd5b6101218161015f60201b60201c565b5061015a3361013461022560201b60201c565b600a61014091906109c8565b6323c3460061014f9190610a13565b61022e60201b60201c565b610aea565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102a05760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610297919061083e565b60405180910390fd5b6102b2600083836102b660201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103085780600260008282546102fc9190610a55565b925050819055506103db565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610394578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161038b93929190610a98565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104245780600260008282540392505081905550610471565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104ce9190610acf565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061055c57607f821691505b60208210810361056f5761056e610515565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261059a565b6105e1868361059a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061062861062361061e846105f9565b610603565b6105f9565b9050919050565b6000819050919050565b6106428361060d565b61065661064e8261062f565b8484546105a7565b825550505050565b600090565b61066b61065e565b610676818484610639565b505050565b5b8181101561069a5761068f600082610663565b60018101905061067c565b5050565b601f8211156106df576106b081610575565b6106b98461058a565b810160208510156106c8578190505b6106dc6106d48561058a565b83018261067b565b50505b505050565b600082821c905092915050565b6000610702600019846008026106e4565b1980831691505092915050565b600061071b83836106f1565b9150826002028217905092915050565b610734826104db565b67ffffffffffffffff81111561074d5761074c6104e6565b5b6107578254610544565b61076282828561069e565b600060209050601f8311600181146107955760008415610783578287015190505b61078d858261070f565b8655506107f5565b601f1984166107a386610575565b60005b828110156107cb578489015182556001820191506020850194506020810190506107a6565b868310156107e857848901516107e4601f8916826106f1565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610828826107fd565b9050919050565b6108388161081d565b82525050565b6000602082019050610853600083018461082f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156108df578086048111156108bb576108ba610859565b5b60018516156108ca5780820291505b80810290506108d885610888565b945061089f565b94509492505050565b6000826108f857600190506109b4565b8161090657600090506109b4565b816001811461091c576002811461092657610955565b60019150506109b4565b60ff84111561093857610937610859565b5b8360020a91508482111561094f5761094e610859565b5b506109b4565b5060208310610133831016604e8410600b841016171561098a5782820a90508381111561098557610984610859565b5b6109b4565b6109978484846001610895565b925090508184048111156109ae576109ad610859565b5b81810290505b9392505050565b600060ff82169050919050565b60006109d3826105f9565b91506109de836109bb565b9250610a0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846108e8565b905092915050565b6000610a1e826105f9565b9150610a29836105f9565b9250828202610a37816105f9565b91508282048414831517610a4e57610a4d610859565b5b5092915050565b6000610a60826105f9565b9150610a6b836105f9565b9250828201905080821115610a8357610a82610859565b5b92915050565b610a92816105f9565b82525050565b6000606082019050610aad600083018661082f565b610aba6020830185610a89565b610ac76040830184610a89565b949350505050565b6000602082019050610ae46000830184610a89565b92915050565b6111a780610af96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063715018a611610071578063715018a6146101a35780638da5cb5b146101ad57806395d89b41146101cb578063a9059cbb146101e9578063dd62ed3e14610219578063f2fde38b14610249576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce5671461015557806370a0823114610173575b600080fd5b6100c1610265565b6040516100ce9190610dfb565b60405180910390f35b6100f160048036038101906100ec9190610eb6565b6102f7565b6040516100fe9190610f11565b60405180910390f35b61010f61031a565b60405161011c9190610f3b565b60405180910390f35b61013f600480360381019061013a9190610f56565b610324565b60405161014c9190610f11565b60405180910390f35b61015d610353565b60405161016a9190610fc5565b60405180910390f35b61018d60048036038101906101889190610fe0565b61035c565b60405161019a9190610f3b565b60405180910390f35b6101ab6103a4565b005b6101b56103b8565b6040516101c2919061101c565b60405180910390f35b6101d36103e2565b6040516101e09190610dfb565b60405180910390f35b61020360048036038101906101fe9190610eb6565b610474565b6040516102109190610f11565b60405180910390f35b610233600480360381019061022e9190611037565b610497565b6040516102409190610f3b565b60405180910390f35b610263600480360381019061025e9190610fe0565b610526565b005b606060038054610274906110a6565b80601f01602080910402602001604051908101604052809291908181526020018280546102a0906110a6565b80156102ed5780601f106102c2576101008083540402835291602001916102ed565b820191906000526020600020905b8154815290600101906020018083116102d057829003601f168201915b5050505050905090565b6000806103026105ac565b905061030f8185856105b4565b600191505092915050565b6000600254905090565b60008061032f6105ac565b905061033c8582856105c6565b61034785858561065b565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6103ac61074f565b6103b660006107d6565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103f1906110a6565b80601f016020809104026020016040519081016040528092919081815260200182805461041d906110a6565b801561046a5780601f1061043f5761010080835404028352916020019161046a565b820191906000526020600020905b81548152906001019060200180831161044d57829003601f168201915b5050505050905090565b60008061047f6105ac565b905061048c81858561065b565b600191505092915050565b600061051e600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089c565b905092915050565b61052e61074f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105a05760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610597919061101c565b60405180910390fd5b6105a9816107d6565b50565b600033905090565b6105c18383836001610909565b505050565b60006105d28484610497565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106555781811015610645578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161063c939291906110d7565b60405180910390fd5b61065484848484036000610909565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106cd5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106c4919061101c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361073f5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610736919061101c565b60405180910390fd5b61074a838383610ae0565b505050565b6107576105ac565b73ffffffffffffffffffffffffffffffffffffffff166107756103b8565b73ffffffffffffffffffffffffffffffffffffffff16146107d4576107986105ac565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107cb919061101c565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060003373ffffffffffffffffffffffffffffffffffffffff16905060006108c4610d05565b905045828214935050826108dd57849350505050610904565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361097b5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610972919061101c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109ed5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109e4919061101c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610ada578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ad19190610f3b565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b32578060026000828254610b26919061113d565b92505081905550610c05565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bbe578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610bb5939291906110d7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4e5780600260008282540392505081905550610c9b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cf89190610f3b565b60405180910390a3505050565b6000806000601a76418cf50881549ce1597f649dfa340e7a3dab2354000000901c90508076b941f329b103e800000000000000000000000000000000601a1c76cf7b3ac2dc582800000000000000000000000000000000601a1c01019150819250505090565b600081519050919050565b600082825260208201905092915050565b60005b83811015610da5578082015181840152602081019050610d8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000610dcd82610d6b565b610dd78185610d76565b9350610de7818560208601610d87565b610df081610db1565b840191505092915050565b60006020820190508181036000830152610e158184610dc2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e4d82610e22565b9050919050565b610e5d81610e42565b8114610e6857600080fd5b50565b600081359050610e7a81610e54565b92915050565b6000819050919050565b610e9381610e80565b8114610e9e57600080fd5b50565b600081359050610eb081610e8a565b92915050565b60008060408385031215610ecd57610ecc610e1d565b5b6000610edb85828601610e6b565b9250506020610eec85828601610ea1565b9150509250929050565b60008115159050919050565b610f0b81610ef6565b82525050565b6000602082019050610f266000830184610f02565b92915050565b610f3581610e80565b82525050565b6000602082019050610f506000830184610f2c565b92915050565b600080600060608486031215610f6f57610f6e610e1d565b5b6000610f7d86828701610e6b565b9350506020610f8e86828701610e6b565b9250506040610f9f86828701610ea1565b9150509250925092565b600060ff82169050919050565b610fbf81610fa9565b82525050565b6000602082019050610fda6000830184610fb6565b92915050565b600060208284031215610ff657610ff5610e1d565b5b600061100484828501610e6b565b91505092915050565b61101681610e42565b82525050565b6000602082019050611031600083018461100d565b92915050565b6000806040838503121561104e5761104d610e1d565b5b600061105c85828601610e6b565b925050602061106d85828601610e6b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110be57607f821691505b6020821081036110d1576110d0611077565b5b50919050565b60006060820190506110ec600083018661100d565b6110f96020830185610f2c565b6111066040830184610f2c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061114882610e80565b915061115383610e80565b925082820190508082111561116b5761116a61110e565b5b9291505056fea26469706673582212202f0f9d05994148a2d5358b3ef49eb8ff9f2e7f2f616406bfb47ddcdedad20a4a64736f6c634300081a0033