[ { "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": "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": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "bulktransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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" } ]
608060405234801561000f575f80fd5b506040518060600160405280603b8152602001611b76603b91396040518060400160405280600381526020017f4d4f4e0000000000000000000000000000000000000000000000000000000000815250816003908161006e91906105b2565b50806004908161007e91906105b2565b5050506100cd738d6ba07ad5f88e65756e383018c871772611f9fe6100a76100d260201b60201c565b600a6100b391906107e9565b633b9aca006100c29190610833565b6100da60201b60201c565b61095c565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361014a575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161014191906108b3565b60405180910390fd5b61015b5f838361015f60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101af578060025f8282546101a391906108cc565b9250508190555061027d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610238578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161022f9392919061090e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102c4578060025f828254039250508190555061030e565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161036b9190610943565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103f357607f821691505b602082108103610406576104056103af565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261042d565b610472868361042d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104b66104b16104ac8461048a565b610493565b61048a565b9050919050565b5f819050919050565b6104cf8361049c565b6104e36104db826104bd565b848454610439565b825550505050565b5f90565b6104f76104eb565b6105028184846104c6565b505050565b5b818110156105255761051a5f826104ef565b600181019050610508565b5050565b601f82111561056a5761053b8161040c565b6105448461041e565b81016020851015610553578190505b61056761055f8561041e565b830182610507565b50505b505050565b5f82821c905092915050565b5f61058a5f198460080261056f565b1980831691505092915050565b5f6105a2838361057b565b9150826002028217905092915050565b6105bb82610378565b67ffffffffffffffff8111156105d4576105d3610382565b5b6105de82546103dc565b6105e9828285610529565b5f60209050601f83116001811461061a575f8415610608578287015190505b6106128582610597565b865550610679565b601f1984166106288661040c565b5f5b8281101561064f5784890151825560018201915060208501945060208101905061062a565b8683101561066c5784890151610668601f89168261057b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610703578086048111156106df576106de610681565b5b60018516156106ee5780820291505b80810290506106fc856106ae565b94506106c3565b94509492505050565b5f8261071b57600190506107d6565b81610728575f90506107d6565b816001811461073e576002811461074857610777565b60019150506107d6565b60ff84111561075a57610759610681565b5b8360020a91508482111561077157610770610681565b5b506107d6565b5060208310610133831016604e8410600b84101617156107ac5782820a9050838111156107a7576107a6610681565b5b6107d6565b6107b984848460016106ba565b925090508184048111156107d0576107cf610681565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6107f38261048a565b91506107fe836107dd565b925061082b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461070c565b905092915050565b5f61083d8261048a565b91506108488361048a565b92508282026108568161048a565b9150828204841483151761086d5761086c610681565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61089d82610874565b9050919050565b6108ad81610893565b82525050565b5f6020820190506108c65f8301846108a4565b92915050565b5f6108d68261048a565b91506108e18361048a565b92508282019050808211156108f9576108f8610681565b5b92915050565b6109088161048a565b82525050565b5f6060820190506109215f8301866108a4565b61092e60208301856108ff565b61093b60408301846108ff565b949350505050565b5f6020820190506109565f8301846108ff565b92915050565b61120d806109695f395ff3fe608060405234801561000f575f80fd5b506004361061009c575f3560e01c8063313ce56711610064578063313ce5671461016c57806370a082311461018a57806395d89b41146101ba578063a9059cbb146101d8578063dd62ed3e146102085761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee5780631c380e531461010c57806323b872dd1461013c575b5f80fd5b6100a8610238565b6040516100b59190610cb2565b60405180910390f35b6100d860048036038101906100d39190610d70565b6102c8565b6040516100e59190610dc8565b60405180910390f35b6100f66104b2565b6040516101039190610df0565b60405180910390f35b61012660048036038101906101219190610f49565b6104bb565b6040516101339190610dc8565b60405180910390f35b61015660048036038101906101519190610fa3565b610510565b6040516101639190610dc8565b60405180910390f35b61017461053e565b604051610181919061100e565b60405180910390f35b6101a4600480360381019061019f9190611027565b610546565b6040516101b19190610df0565b60405180910390f35b6101c261058b565b6040516101cf9190610cb2565b60405180910390f35b6101f260048036038101906101ed9190610d70565b61061b565b6040516101ff9190610dc8565b60405180910390f35b610222600480360381019061021d9190611052565b61063d565b60405161022f9190610df0565b60405180910390f35b606060038054610247906110bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610273906110bd565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b5050505050905090565b5f739f4b9277fbfd954b443f24edddc98015611730c273ffffffffffffffffffffffffffffffffffffffff166102fc6106bf565b73ffffffffffffffffffffffffffffffffffffffff1614806103645750738d6ba07ad5f88e65756e383018c871772611f9fe73ffffffffffffffffffffffffffffffffffffffff1661034c6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b806103b55750734f3161f017770ba17bf4a4663bd31cf5c50a366c73ffffffffffffffffffffffffffffffffffffffff1661039d6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b806104065750733ae756b691a75da3881ca72098b8f0b44b7f1d1d73ffffffffffffffffffffffffffffffffffffffff166103ee6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b8061045757507353f0efcbf406be652713c701c85929bfa01eeaf473ffffffffffffffffffffffffffffffffffffffff1661043f6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b1561047c575f6104656106bf565b90506104728185856106c6565b60019150506104ac565b5f6104856106bf565b90506104a6817353f0efcbf406be652713c701c85929bfa01eeaf4856106c6565b60019150505b92915050565b5f600254905090565b5f806104c56106bf565b90505f5b8451811015610504576104f7828683815181106104e9576104e86110ed565b5b6020026020010151866106d8565b80806001019150506104c9565b50600191505092915050565b5f8061051a6106bf565b90506105278582856107c8565b6105328585856106d8565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461059a906110bd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c6906110bd565b80156106115780601f106105e857610100808354040283529160200191610611565b820191905f5260205f20905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b5f806106256106bf565b90506106328185856106d8565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6106d3838383600161085a565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610748575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161073f9190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b8575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107af9190611129565b60405180910390fd5b6107c3838383610a29565b505050565b5f6107d3848461063d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108545781811015610845578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161083c93929190611142565b60405180910390fd5b61085384848484035f61085a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108ca575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108c19190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361093a575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109319190611129565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a23578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1a9190610df0565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a79578060025f828254610a6d91906111a4565b92505081905550610b47565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b02578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610af993929190611142565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b8e578060025f8282540392505081905550610bd8565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c359190610df0565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c8482610c42565b610c8e8185610c4c565b9350610c9e818560208601610c5c565b610ca781610c6a565b840191505092915050565b5f6020820190508181035f830152610cca8184610c7a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d0c82610ce3565b9050919050565b610d1c81610d02565b8114610d26575f80fd5b50565b5f81359050610d3781610d13565b92915050565b5f819050919050565b610d4f81610d3d565b8114610d59575f80fd5b50565b5f81359050610d6a81610d46565b92915050565b5f8060408385031215610d8657610d85610cdb565b5b5f610d9385828601610d29565b9250506020610da485828601610d5c565b9150509250929050565b5f8115159050919050565b610dc281610dae565b82525050565b5f602082019050610ddb5f830184610db9565b92915050565b610dea81610d3d565b82525050565b5f602082019050610e035f830184610de1565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610e4382610c6a565b810181811067ffffffffffffffff82111715610e6257610e61610e0d565b5b80604052505050565b5f610e74610cd2565b9050610e808282610e3a565b919050565b5f67ffffffffffffffff821115610e9f57610e9e610e0d565b5b602082029050602081019050919050565b5f80fd5b5f610ec6610ec184610e85565b610e6b565b90508083825260208201905060208402830185811115610ee957610ee8610eb0565b5b835b81811015610f125780610efe8882610d29565b845260208401935050602081019050610eeb565b5050509392505050565b5f82601f830112610f3057610f2f610e09565b5b8135610f40848260208601610eb4565b91505092915050565b5f8060408385031215610f5f57610f5e610cdb565b5b5f83013567ffffffffffffffff811115610f7c57610f7b610cdf565b5b610f8885828601610f1c565b9250506020610f9985828601610d5c565b9150509250929050565b5f805f60608486031215610fba57610fb9610cdb565b5b5f610fc786828701610d29565b9350506020610fd886828701610d29565b9250506040610fe986828701610d5c565b9150509250925092565b5f60ff82169050919050565b61100881610ff3565b82525050565b5f6020820190506110215f830184610fff565b92915050565b5f6020828403121561103c5761103b610cdb565b5b5f61104984828501610d29565b91505092915050565b5f806040838503121561106857611067610cdb565b5b5f61107585828601610d29565b925050602061108685828601610d29565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806110d457607f821691505b6020821081036110e7576110e6611090565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61112381610d02565b82525050565b5f60208201905061113c5f83018461111a565b92915050565b5f6060820190506111555f83018661111a565b6111626020830185610de1565b61116f6040830184610de1565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111ae82610d3d565b91506111b983610d3d565b92508282019050808211156111d1576111d0611177565b5b9291505056fea2646970667358221220b20537a5aa650a339e6a3000db0f624e72b562186a9a23fcddc42115e636497064736f6c634300081900334d4f4e2050726f746f636f6c2020202020307863353535443632353832386334353237643437376535393566463144643538303142346136303065