[ { "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" }, { "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": [ { "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": "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": "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" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferWithLog", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040525f6006555f6007555f6008555f6009555f600a555f600b555f600c555f600d555f600e55348015610033575f80fd5b506040518060400160405280600e81526020017f414d45524943414e205452554d500000000000000000000000000000000000008152506040518060400160405280600781526020017f55535452554d500000000000000000000000000000000000000000000000000081525081600390816100af9190610602565b5080600490816100bf9190610602565b5050505f6d0212fda12df949b75aeaae12000090506100e4338261012a60201b60201c565b5f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506107e6565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361019a575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101919190610710565b60405180910390fd5b6101ab5f83836101af60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101ff578060025f8282546101f39190610756565b925050819055506102cd565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610288578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161027f93929190610798565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610314578060025f828254039250508190555061035e565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103bb91906107cd565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061044357607f821691505b602082108103610456576104556103ff565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261047d565b6104c2868361047d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105066105016104fc846104da565b6104e3565b6104da565b9050919050565b5f819050919050565b61051f836104ec565b61053361052b8261050d565b848454610489565b825550505050565b5f90565b61054761053b565b610552818484610516565b505050565b5b818110156105755761056a5f8261053f565b600181019050610558565b5050565b601f8211156105ba5761058b8161045c565b6105948461046e565b810160208510156105a3578190505b6105b76105af8561046e565b830182610557565b50505b505050565b5f82821c905092915050565b5f6105da5f19846008026105bf565b1980831691505092915050565b5f6105f283836105cb565b9150826002028217905092915050565b61060b826103c8565b67ffffffffffffffff811115610624576106236103d2565b5b61062e825461042c565b610639828285610579565b5f60209050601f83116001811461066a575f8415610658578287015190505b61066285826105e7565b8655506106c9565b601f1984166106788661045c565b5f5b8281101561069f5784890151825560018201915060208501945060208101905061067a565b868310156106bc57848901516106b8601f8916826105cb565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106fa826106d1565b9050919050565b61070a816106f0565b82525050565b5f6020820190506107235f830184610701565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610760826104da565b915061076b836104da565b925082820190508082111561078357610782610729565b5b92915050565b610792816104da565b82525050565b5f6060820190506107ab5f830186610701565b6107b86020830185610789565b6107c56040830184610789565b949350505050565b5f6020820190506107e05f830184610789565b92915050565b6115f7806107f35f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806342966c681161008a57806395d89b411161006457806395d89b4114610225578063a9059cbb14610243578063dd62ed3e14610273578063f2fde38b146102a3576100cd565b806342966c68146101bb57806370a08231146101d75780638da5cb5b14610207576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d5780633f96b8c11461018b575b5f80fd5b6100d96102bf565b6040516100e69190610fe4565b60405180910390f35b61010960048036038101906101049190611095565b61034f565b60405161011691906110ed565b60405180910390f35b610127610371565b6040516101349190611115565b60405180910390f35b6101576004803603810190610152919061112e565b61037a565b60405161016491906110ed565b60405180910390f35b6101756104b5565b6040516101829190611199565b60405180910390f35b6101a560048036038101906101a09190611095565b6104bd565b6040516101b291906110ed565b60405180910390f35b6101d560048036038101906101d091906111b2565b6105f1565b005b6101f160048036038101906101ec91906111dd565b6105fe565b6040516101fe9190611115565b60405180910390f35b61020f610643565b60405161021c9190611217565b60405180910390f35b61022d610668565b60405161023a9190610fe4565b60405180910390f35b61025d60048036038101906102589190611095565b6106f8565b60405161026a91906110ed565b60405180910390f35b61028d60048036038101906102889190611230565b6107c7565b60405161029a9190611115565b60405180910390f35b6102bd60048036038101906102b891906111dd565b610849565b005b6060600380546102ce9061129b565b80601f01602080910402602001604051908101604052809291908181526020018280546102fa9061129b565b80156103455780601f1061031c57610100808354040283529160200191610345565b820191905f5260205f20905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b5f80610359610a04565b9050610366818585610a0b565b600191505092915050565b5f600254905090565b5f61038584336107c7565b8211156103c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103be90611315565b60405180910390fd5b6103d0846105fe565b821115610412576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104099061137d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610477906113e5565b60405180910390fd5b61048b848484610a1d565b6104aa84338461049b88336107c7565b6104a59190611430565b610a0b565b600190509392505050565b5f6012905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906113e5565b60405180910390fd5b610535336105fe565b821115610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e9061137d565b60405180910390fd5b610582338484610a1d565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105df9190611115565b60405180910390a36001905092915050565b6105fb3382610b0d565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546106779061129b565b80601f01602080910402602001604051908101604052809291908181526020018280546106a39061129b565b80156106ee5780601f106106c5576101008083540402835291602001916106ee565b820191905f5260205f20905b8154815290600101906020018083116106d157829003601f168201915b5050505050905090565b5f610702336105fe565b821115610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073b9061137d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a9906113e5565b60405180910390fd5b6107bd338484610a1d565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae906114ad565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d9061153b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b610a188383836001610b8c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a8d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a849190611217565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610afd575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610af49190611217565b60405180910390fd5b610b08838383610d5b565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b749190611217565b60405180910390fd5b610b88825f83610d5b565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bfc575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610bf39190611217565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c6c575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c639190611217565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d55578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d4c9190611115565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dab578060025f828254610d9f9190611559565b92505081905550610e79565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e34578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610e2b9392919061158c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ec0578060025f8282540392505081905550610f0a565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f679190611115565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fb682610f74565b610fc08185610f7e565b9350610fd0818560208601610f8e565b610fd981610f9c565b840191505092915050565b5f6020820190508181035f830152610ffc8184610fac565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61103182611008565b9050919050565b61104181611027565b811461104b575f80fd5b50565b5f8135905061105c81611038565b92915050565b5f819050919050565b61107481611062565b811461107e575f80fd5b50565b5f8135905061108f8161106b565b92915050565b5f80604083850312156110ab576110aa611004565b5b5f6110b88582860161104e565b92505060206110c985828601611081565b9150509250929050565b5f8115159050919050565b6110e7816110d3565b82525050565b5f6020820190506111005f8301846110de565b92915050565b61110f81611062565b82525050565b5f6020820190506111285f830184611106565b92915050565b5f805f6060848603121561114557611144611004565b5b5f6111528682870161104e565b93505060206111638682870161104e565b925050604061117486828701611081565b9150509250925092565b5f60ff82169050919050565b6111938161117e565b82525050565b5f6020820190506111ac5f83018461118a565b92915050565b5f602082840312156111c7576111c6611004565b5b5f6111d484828501611081565b91505092915050565b5f602082840312156111f2576111f1611004565b5b5f6111ff8482850161104e565b91505092915050565b61121181611027565b82525050565b5f60208201905061122a5f830184611208565b92915050565b5f806040838503121561124657611245611004565b5b5f6112538582860161104e565b92505060206112648582860161104e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112b257607f821691505b6020821081036112c5576112c461126e565b5b50919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6112ff601683610f7e565b915061130a826112cb565b602082019050919050565b5f6020820190508181035f83015261132c816112f3565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611367601483610f7e565b915061137282611333565b602082019050919050565b5f6020820190508181035f8301526113948161135b565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6113cf601c83610f7e565b91506113da8261139b565b602082019050919050565b5f6020820190508181035f8301526113fc816113c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61143a82611062565b915061144583611062565b925082820390508181111561145d5761145c611403565b5b92915050565b7f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573735f82015250565b5f611497602083610f7e565b91506114a282611463565b602082019050919050565b5f6020820190508181035f8301526114c48161148b565b9050919050565b7f4f6e6c79207468652063757272656e74206f776e65722063616e207472616e735f8201527f666572206f776e65727368697000000000000000000000000000000000000000602082015250565b5f611525602d83610f7e565b9150611530826114cb565b604082019050919050565b5f6020820190508181035f83015261155281611519565b9050919050565b5f61156382611062565b915061156e83611062565b925082820190508082111561158657611585611403565b5b92915050565b5f60608201905061159f5f830186611208565b6115ac6020830185611106565b6115b96040830184611106565b94935050505056fea2646970667358221220bdc896303bb57b76ff5f49ebd680ea0505172822cc829de532c657cd31b6e61764736f6c634300081a0033