[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "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" }, { "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "setMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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" } ]
608060405234801561001057600080fd5b506040518060400160405280600481526020016315195cdd60e21b8152506040518060400160405280600581526020016409151154d560da1b815250816003908161005b919061021d565b506004610068828261021d565b50505061009b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e336100cc60201b60201c565b506100c67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336100cc565b506102dc565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff166101725760008381526005602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561012a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610176565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806101a657607f821691505b6020821081036101c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610218576000816000526020600020601f850160051c810160208610156101f55750805b601f850160051c820191505b8181101561021457828155600101610201565b5050505b505050565b81516001600160401b038111156102365761023661017c565b61024a816102448454610192565b846101cc565b602080601f83116001811461027f57600084156102675750858301515b600019600386901b1c1916600185901b178555610214565b600085815260208120601f198616915b828110156102ae5788860151825594840194600190910190840161028f565b50858210156102cc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b9e806102eb6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636a20de92116100a2578063a217fddf11610071578063a217fddf14610241578063a9059cbb14610249578063d547741f1461025c578063dd62ed3e1461026f578063fca3b5aa146102a857600080fd5b80636a20de92146101ea57806370a08231146101fd57806391d148541461022657806395d89b411461023957600080fd5b806323b872dd116100e957806323b872dd1461017d578063248a9ca3146101905780632f2ff15d146101b3578063313ce567146101c857806336568abe146101d757600080fd5b806301ffc9a71461011b57806306fdde0314610143578063095ea7b31461015857806318160ddd1461016b575b600080fd5b61012e610129366004610981565b6102bb565b60405190151581526020015b60405180910390f35b61014b6102f2565b60405161013a91906109b2565b61012e610166366004610a1d565b610384565b6002545b60405190815260200161013a565b61012e61018b366004610a47565b61039c565b61016f61019e366004610a83565b60009081526005602052604090206001015490565b6101c66101c1366004610a9c565b6103c0565b005b6040516012815260200161013a565b6101c66101e5366004610a9c565b6103eb565b6101c66101f8366004610a1d565b610423565b61016f61020b366004610ac8565b6001600160a01b031660009081526020819052604090205490565b61012e610234366004610a9c565b610457565b61014b610482565b61016f600081565b61012e610257366004610a1d565b610491565b6101c661026a366004610a9c565b61049f565b61016f61027d366004610ae3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c66102b6366004610ac8565b6104c4565b60006001600160e01b03198216637965db0b60e01b14806102ec57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461030190610b0d565b80601f016020809104026020016040519081016040528092919081815260200182805461032d90610b0d565b801561037a5780601f1061034f5761010080835404028352916020019161037a565b820191906000526020600020905b81548152906001019060200180831161035d57829003601f168201915b5050505050905090565b600033610392818585610518565b5060019392505050565b6000336103aa858285610525565b6103b58585856105a2565b506001949350505050565b6000828152600560205260409020600101546103db81610601565b6103e5838361060e565b50505050565b6001600160a01b03811633146104145760405163334bd91960e11b815260040160405180910390fd5b61041e82826106a2565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661044d81610601565b61041e838361070f565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461030190610b0d565b6000336103928185856105a2565b6000828152600560205260409020600101546104ba81610601565b6103e583836106a2565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e6104ee81610601565b61041e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68361060e565b61041e8383836001610749565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103e5578181101561059357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b6103e584848484036000610749565b6001600160a01b0383166105cc57604051634b637e8f60e11b81526000600482015260240161058a565b6001600160a01b0382166105f65760405163ec442f0560e01b81526000600482015260240161058a565b61041e83838361081e565b61060b8133610948565b50565b600061061a8383610457565b61069a5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106523390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102ec565b5060006102ec565b60006106ae8383610457565b1561069a5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102ec565b6001600160a01b0382166107395760405163ec442f0560e01b81526000600482015260240161058a565b6107456000838361081e565b5050565b6001600160a01b0384166107735760405163e602df0560e01b81526000600482015260240161058a565b6001600160a01b03831661079d57604051634a1406b160e11b81526000600482015260240161058a565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103e557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081091815260200190565b60405180910390a350505050565b6001600160a01b03831661084957806002600082825461083e9190610b47565b909155506108bb9050565b6001600160a01b0383166000908152602081905260409020548181101561089c5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161058a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166108d7576002805482900390556108f6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161093b91815260200190565b60405180910390a3505050565b6109528282610457565b6107455760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161058a565b60006020828403121561099357600080fd5b81356001600160e01b0319811681146109ab57600080fd5b9392505050565b60006020808352835180602085015260005b818110156109e0578581018301518582016040015282016109c4565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a1857600080fd5b919050565b60008060408385031215610a3057600080fd5b610a3983610a01565b946020939093013593505050565b600080600060608486031215610a5c57600080fd5b610a6584610a01565b9250610a7360208501610a01565b9150604084013590509250925092565b600060208284031215610a9557600080fd5b5035919050565b60008060408385031215610aaf57600080fd5b82359150610abf60208401610a01565b90509250929050565b600060208284031215610ada57600080fd5b6109ab82610a01565b60008060408385031215610af657600080fd5b610aff83610a01565b9150610abf60208401610a01565b600181811c90821680610b2157607f821691505b602082108103610b4157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102ec57634e487b7160e01b600052601160045260246000fdfea2646970667358221220792eeb8b1733eb48d2c9edf1372c172f0b942ff43d49e92d7f458db37087036064736f6c63430008190033