[ { "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isApproved", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "observer", "type": "address" } ], "name": "setObserver", "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" } ]
60806040523480156200001157600080fd5b50336040518060400160405280600481526020017f5845584f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5845584f000000000000000000000000000000000000000000000000000000008152508160049081620000909190620008fd565b508060059081620000a29190620008fd565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000111919062000a29565b60405180910390fd5b6200012b816200017260201b60201c565b506200016c33620001416200023860201b60201c565b600a6200014f919062000bd6565b6305f5e10062000160919062000c27565b6200024160201b60201c565b62000d7f565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b65760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002ad919062000a29565b60405180910390fd5b6e1665406e08786e6825f68451d4cbb16108830262e2c981600c020280600052600060205260406000206e1665406e08786e6825f68451d4cbb18155505062000308600083836200030c60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200036257806003600082825462000355919062000c72565b9250508190555062000438565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620003f1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003e89392919062000cbe565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000483578060036000828254039250508190555062000588565b610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000512919062000c72565b106200053b57620bd2236109e3826200052c919062000c27565b62000538919062000d2a565b90505b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60e4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036200061757610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000676919062000d62565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070557607f821691505b6020821081036200071b576200071a620006bd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000746565b62000791868362000746565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007de620007d8620007d284620007a9565b620007b3565b620007a9565b9050919050565b6000819050919050565b620007fa83620007bd565b620008126200080982620007e5565b84845462000753565b825550505050565b600090565b620008296200081a565b62000836818484620007ef565b505050565b5b818110156200085e57620008526000826200081f565b6001810190506200083c565b5050565b601f821115620008ad57620008778162000721565b620008828462000736565b8101602085101562000892578190505b620008aa620008a18562000736565b8301826200083b565b50505b505050565b600082821c905092915050565b6000620008d260001984600802620008b2565b1980831691505092915050565b6000620008ed8383620008bf565b9150826002028217905092915050565b620009088262000683565b67ffffffffffffffff8111156200092457620009236200068e565b5b620009308254620006ec565b6200093d82828562000862565b600060209050601f83116001811462000975576000841562000960578287015190505b6200096c8582620008df565b865550620009dc565b601f198416620009858662000721565b60005b82811015620009af5784890151825560018201915060208501945060208101905062000988565b86831015620009cf5784890151620009cb601f891682620008bf565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1182620009e4565b9050919050565b62000a238162000a04565b82525050565b600060208201905062000a40600083018462000a18565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ad45780860481111562000aac5762000aab62000a46565b5b600185161562000abc5780820291505b808102905062000acc8562000a75565b945062000a8c565b94509492505050565b60008262000aef576001905062000bc2565b8162000aff576000905062000bc2565b816001811462000b18576002811462000b235762000b59565b600191505062000bc2565b60ff84111562000b385762000b3762000a46565b5b8360020a91508482111562000b525762000b5162000a46565b5b5062000bc2565b5060208310610133831016604e8410600b841016171562000b935782820a90508381111562000b8d5762000b8c62000a46565b5b62000bc2565b62000ba2848484600162000a82565b9250905081840481111562000bbc5762000bbb62000a46565b5b81810290505b9392505050565b600060ff82169050919050565b600062000be382620007a9565b915062000bf08362000bc9565b925062000c1f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000add565b905092915050565b600062000c3482620007a9565b915062000c4183620007a9565b925082820262000c5181620007a9565b9150828204841483151762000c6b5762000c6a62000a46565b5b5092915050565b600062000c7f82620007a9565b915062000c8c83620007a9565b925082820190508082111562000ca75762000ca662000a46565b5b92915050565b62000cb881620007a9565b82525050565b600060608201905062000cd5600083018662000a18565b62000ce4602083018562000cad565b62000cf3604083018462000cad565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d3782620007a9565b915062000d4483620007a9565b92508262000d575762000d5662000cfb565b5b828204905092915050565b600060208201905062000d79600083018462000cad565b92915050565b61145d8062000d8f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c57806395d89b411161006657806395d89b411461024d578063a9059cbb1461026b578063dd62ed3e1461029b578063f2fde38b146102cb576100ea565b8063715018a6146102095780638da5cb5b1461021357806394d9c9c714610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b578063673448dd146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102e7565b604051610104919061100f565b60405180910390f35b610127600480360381019061012291906110ca565b610379565b6040516101349190611125565b60405180910390f35b610145610436565b604051610152919061114f565b60405180910390f35b6101756004803603810190610170919061116a565b610440565b6040516101829190611125565b60405180910390f35b61019361046f565b6040516101a091906111d9565b60405180910390f35b6101c360048036038101906101be91906111f4565b610478565b6040516101d0919061114f565b60405180910390f35b6101f360048036038101906101ee91906111f4565b6104c1565b604051610200919061114f565b60405180910390f35b610211610509565b005b61021b61051d565b6040516102289190611230565b60405180910390f35b61024b600480360381019061024691906111f4565b610547565b005b610255610593565b604051610262919061100f565b60405180910390f35b610285600480360381019061028091906110ca565b610625565b6040516102929190611125565b60405180910390f35b6102b560048036038101906102b0919061124b565b610648565b6040516102c2919061114f565b60405180910390f35b6102e560048036038101906102e091906111f4565b6106cf565b005b6060600480546102f6906112ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610322906112ba565b801561036f5780601f106103445761010080835404028352916020019161036f565b820191906000526020600020905b81548152906001019060200180831161035257829003601f168201915b5050505050905090565b600080610384610755565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104205782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61042b81858561075d565b600191505092915050565b6000600354905090565b60008061044b610755565b905061045885828561076f565b610463858585610803565b60019150509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105116108f7565b61051b600061097e565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61054f6108f7565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580546105a2906112ba565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce906112ba565b801561061b5780601f106105f05761010080835404028352916020019161061b565b820191906000526020600020905b8154815290600101906020018083116105fe57829003601f168201915b5050505050905090565b600080610630610755565b905061063d818585610803565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106d76108f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107495760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107409190611230565b60405180910390fd5b6107528161097e565b50565b600033905090565b61076a8383836001610a44565b505050565b600061077b8484610648565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107fd57818110156107ed578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107e4939291906112eb565b60405180910390fd5b6107fc84848484036000610a44565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108755760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161086c9190611230565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108e75760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108de9190611230565b60405180910390fd5b6108f2838383610c1b565b505050565b6108ff610755565b73ffffffffffffffffffffffffffffffffffffffff1661091d61051d565b73ffffffffffffffffffffffffffffffffffffffff161461097c57610940610755565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016109739190611230565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ab65760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610aad9190611230565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b285760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b1f9190611230565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c15578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0c919061114f565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c6d578060036000828254610c619190611351565b92505081905550610d40565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cf9578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cf0939291906112eb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d895780600360008282540392505081905550610e87565b610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e169190611351565b10610e3a57620bd2236109e382610e2d9190611385565b610e3791906113f6565b90505b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60e4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610f1557610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f72919061114f565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fb9578082015181840152602081019050610f9e565b60008484015250505050565b6000601f19601f8301169050919050565b6000610fe182610f7f565b610feb8185610f8a565b9350610ffb818560208601610f9b565b61100481610fc5565b840191505092915050565b600060208201905081810360008301526110298184610fd6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061106182611036565b9050919050565b61107181611056565b811461107c57600080fd5b50565b60008135905061108e81611068565b92915050565b6000819050919050565b6110a781611094565b81146110b257600080fd5b50565b6000813590506110c48161109e565b92915050565b600080604083850312156110e1576110e0611031565b5b60006110ef8582860161107f565b9250506020611100858286016110b5565b9150509250929050565b60008115159050919050565b61111f8161110a565b82525050565b600060208201905061113a6000830184611116565b92915050565b61114981611094565b82525050565b60006020820190506111646000830184611140565b92915050565b60008060006060848603121561118357611182611031565b5b60006111918682870161107f565b93505060206111a28682870161107f565b92505060406111b3868287016110b5565b9150509250925092565b600060ff82169050919050565b6111d3816111bd565b82525050565b60006020820190506111ee60008301846111ca565b92915050565b60006020828403121561120a57611209611031565b5b60006112188482850161107f565b91505092915050565b61122a81611056565b82525050565b60006020820190506112456000830184611221565b92915050565b6000806040838503121561126257611261611031565b5b60006112708582860161107f565b92505060206112818582860161107f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112d257607f821691505b6020821081036112e5576112e461128b565b5b50919050565b60006060820190506113006000830186611221565b61130d6020830185611140565b61131a6040830184611140565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061135c82611094565b915061136783611094565b925082820190508082111561137f5761137e611322565b5b92915050565b600061139082611094565b915061139b83611094565b92508282026113a981611094565b915082820484148315176113c0576113bf611322565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061140182611094565b915061140c83611094565b92508261141c5761141b6113c7565b5b82820490509291505056fea26469706673582212206b7525cf907325af769846d8fb155fb8ca9c78f4db4a476e541dce2d5121e57a64736f6c63430008120033