[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "modifySupply", "outputs": [], "stateMutability": "nonpayable", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "updateUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b506040516200208d3803806200208d8339818101604052810190620000369190620005b9565b806040518060400160405280601081526020017f44656c746141492050726f746f636f6c000000000000000000000000000000008152506040518060400160405280600781526020017f44656c74614149000000000000000000000000000000000000000000000000008152508160039081620000b491906200084d565b508060049081620000c691906200084d565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000133919062000942565b60405180910390fd5b6200014d816200019960201b60201c565b506200019281620001636200025c60201b60201c565b60ff16600a62000174919062000ada565b64174876e80062000186919062000b2a565b6200026460201b60201c565b5062000c15565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b6200027682826200027a60201b60201c565b5050565b6200028c82826200029060201b60201c565b5050565b620002a28282620002a660201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000319575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000310919062000942565b60405180910390fd5b6200032c5f83836200033060201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000384578060025f82825462000377919062000b74565b9250508190555062000455565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000410578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004079392919062000bbf565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200049e578060025f8282540392505081905550620004e8565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000547919062000bfa565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005838262000558565b9050919050565b620005958162000577565b8114620005a0575f80fd5b50565b5f81519050620005b3816200058a565b92915050565b5f60208284031215620005d157620005d062000554565b5b5f620005e084828501620005a3565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200066557607f821691505b6020821081036200067b576200067a62000620565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a2565b620006eb8683620006a2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007356200072f620007298462000703565b6200070c565b62000703565b9050919050565b5f819050919050565b620007508362000715565b620007686200075f826200073c565b848454620006ae565b825550505050565b5f90565b6200077e62000770565b6200078b81848462000745565b505050565b5b81811015620007b257620007a65f8262000774565b60018101905062000791565b5050565b601f8211156200080157620007cb8162000681565b620007d68462000693565b81016020851015620007e6578190505b620007fe620007f58562000693565b83018262000790565b50505b505050565b5f82821c905092915050565b5f620008235f198460080262000806565b1980831691505092915050565b5f6200083d838362000812565b9150826002028217905092915050565b6200085882620005e9565b67ffffffffffffffff811115620008745762000873620005f3565b5b6200088082546200064d565b6200088d828285620007b6565b5f60209050601f831160018114620008c3575f8415620008ae578287015190505b620008ba858262000830565b86555062000929565b601f198416620008d38662000681565b5f5b82811015620008fc57848901518255600182019150602085019450602081019050620008d5565b868310156200091c578489015162000918601f89168262000812565b8355505b6001600288020188555050505b505050505050565b6200093c8162000577565b82525050565b5f602082019050620009575f83018462000931565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620009e757808604811115620009bf57620009be6200095d565b5b6001851615620009cf5780820291505b8081029050620009df856200098a565b94506200099f565b94509492505050565b5f8262000a01576001905062000ad3565b8162000a10575f905062000ad3565b816001811462000a29576002811462000a345762000a6a565b600191505062000ad3565b60ff84111562000a495762000a486200095d565b5b8360020a91508482111562000a635762000a626200095d565b5b5062000ad3565b5060208310610133831016604e8410600b841016171562000aa45782820a90508381111562000a9e5762000a9d6200095d565b5b62000ad3565b62000ab3848484600162000996565b9250905081840481111562000acd5762000acc6200095d565b5b81810290505b9392505050565b5f62000ae68262000703565b915062000af38362000703565b925062000b227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009f0565b905092915050565b5f62000b368262000703565b915062000b438362000703565b925082820262000b538162000703565b9150828204841483151762000b6d5762000b6c6200095d565b5b5092915050565b5f62000b808262000703565b915062000b8d8362000703565b925082820190508082111562000ba85762000ba76200095d565b5b92915050565b62000bb98162000703565b82525050565b5f60608201905062000bd45f83018662000931565b62000be3602083018562000bae565b62000bf2604083018462000bae565b949350505050565b5f60208201905062000c0f5f83018462000bae565b92915050565b61146a8062000c235f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063715018a61161008a57806395d89b411161006457806395d89b4114610236578063a9059cbb14610254578063dd62ed3e14610284578063f2fde38b146102b4576100e8565b8063715018a6146101f257806388b16774146101fc5780638da5cb5b14610218576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce567146101885780634cc2a337146101a657806370a08231146101c2576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102d0565b6040516101019190610fab565b60405180910390f35b610124600480360381019061011f919061105c565b610360565b60405161013191906110b4565b60405180910390f35b610142610382565b60405161014f91906110dc565b60405180910390f35b610172600480360381019061016d91906110f5565b61038b565b60405161017f91906110b4565b60405180910390f35b6101906103aa565b60405161019d9190611160565b60405180910390f35b6101c060048036038101906101bb919061105c565b6103b8565b005b6101dc60048036038101906101d79190611179565b6103ce565b6040516101e991906110dc565b60405180910390f35b6101fa610413565b005b610216600480360381019061021191906111ce565b610426565b005b61022061043c565b60405161022d919061121b565b60405180910390f35b61023e610464565b60405161024b9190610fab565b60405180910390f35b61026e6004803603810190610269919061105c565b6104f4565b60405161027b91906110b4565b60405180910390f35b61029e60048036038101906102999190611234565b610518565b6040516102ab91906110dc565b60405180910390f35b6102ce60048036038101906102c99190611179565b61059a565b005b6060600380546102df9061129f565b80601f016020809104026020016040519081016040528092919081815260200182805461030b9061129f565b80156103565780601f1061032d57610100808354040283529160200191610356565b820191905f5260205f20905b81548152906001019060200180831161033957829003601f168201915b5050505050905090565b5f8061036a61061e565b9050610377818585610625565b600191505092915050565b5f600254905090565b5f6103968484610637565b6103a18484846106cd565b90509392505050565b5f6103b36106fb565b905090565b6103c0610703565b6103ca828261078a565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61041b610703565b6104245f610798565b565b61042e610703565b610438828261085b565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104739061129f565b80601f016020809104026020016040519081016040528092919081815260200182805461049f9061129f565b80156104ea5780601f106104c1576101008083540402835291602001916104ea565b820191905f5260205f20905b8154815290600101906020018083116104cd57829003601f168201915b5050505050905090565b5f61050661050061061e565b84610637565b61051083836108b1565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105a2610703565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610612575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610609919061121b565b60405180910390fd5b61061b81610798565b50565b5f33905090565b61063283838360016108d3565b505050565b61064082610aa2565b15610680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067790611319565b60405180910390fd5b61068981610aa2565b156106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c090611381565b60405180910390fd5b5050565b5f806106d761061e565b90506106e4858285610aeb565b6106ef858585610b7d565b60019150509392505050565b5f6012905090565b61070b61061e565b73ffffffffffffffffffffffffffffffffffffffff1661072961043c565b73ffffffffffffffffffffffffffffffffffffffff16146107885761074c61061e565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161077f919061121b565b60405180910390fd5b565b6107948282610c6d565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80610866575f610869565b60015b60ff1660065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f806108bb61061e565b90506108c8818585610b7d565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610943575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161093a919061121b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109b3575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109aa919061121b565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a9c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a9391906110dc565b60405180910390a35b50505050565b5f600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054149050919050565b5f610af68484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b775781811015610b68578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b5f9392919061139f565b60405180910390fd5b610b7684848484035f6108d3565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bed575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610be4919061121b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c5d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c54919061121b565b60405180910390fd5b610c68838383610c7b565b505050565b610c778282610e94565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ccb578060025f828254610cbf9190611401565b92505081905550610d99565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d54578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d4b9392919061139f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610de0578060025f8282540392505081905550610e2a565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e8791906110dc565b60405180910390a3505050565b610e9e8282610ea2565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f12575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f09919061121b565b60405180910390fd5b610f1d5f8383610c7b565b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f58578082015181840152602081019050610f3d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f7d82610f21565b610f878185610f2b565b9350610f97818560208601610f3b565b610fa081610f63565b840191505092915050565b5f6020820190508181035f830152610fc38184610f73565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ff882610fcf565b9050919050565b61100881610fee565b8114611012575f80fd5b50565b5f8135905061102381610fff565b92915050565b5f819050919050565b61103b81611029565b8114611045575f80fd5b50565b5f8135905061105681611032565b92915050565b5f806040838503121561107257611071610fcb565b5b5f61107f85828601611015565b925050602061109085828601611048565b9150509250929050565b5f8115159050919050565b6110ae8161109a565b82525050565b5f6020820190506110c75f8301846110a5565b92915050565b6110d681611029565b82525050565b5f6020820190506110ef5f8301846110cd565b92915050565b5f805f6060848603121561110c5761110b610fcb565b5b5f61111986828701611015565b935050602061112a86828701611015565b925050604061113b86828701611048565b9150509250925092565b5f60ff82169050919050565b61115a81611145565b82525050565b5f6020820190506111735f830184611151565b92915050565b5f6020828403121561118e5761118d610fcb565b5b5f61119b84828501611015565b91505092915050565b6111ad8161109a565b81146111b7575f80fd5b50565b5f813590506111c8816111a4565b92915050565b5f80604083850312156111e4576111e3610fcb565b5b5f6111f185828601611015565b9250506020611202858286016111ba565b9150509250929050565b61121581610fee565b82525050565b5f60208201905061122e5f83018461120c565b92915050565b5f806040838503121561124a57611249610fcb565b5b5f61125785828601611015565b925050602061126885828601611015565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112b657607f821691505b6020821081036112c9576112c8611272565b5b50919050565b7f5472616e736665722066726f6d2072657374726963746564206163636f756e745f82015250565b5f611303602083610f2b565b915061130e826112cf565b602082019050919050565b5f6020820190508181035f830152611330816112f7565b9050919050565b7f5472616e7366657220746f2072657374726963746564206163636f756e7400005f82015250565b5f61136b601e83610f2b565b915061137682611337565b602082019050919050565b5f6020820190508181035f8301526113988161135f565b9050919050565b5f6060820190506113b25f83018661120c565b6113bf60208301856110cd565b6113cc60408301846110cd565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61140b82611029565b915061141683611029565b925082820190508082111561142e5761142d6113d4565b5b9291505056fea2646970667358221220f2ab813aafa86191751fe75c59d83f0c374867a96da5f813cd2dc0ebd939423664736f6c634300081400330000000000000000000000004eacc7c0dae4f74227f017f6f6f96fb4bebbde5f