[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "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" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": [], "name": "EIP712DomainChanged", "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": "DOMAIN_SEPARATOR", "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": [], "name": "deposit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
610160604052348015610010575f80fd5b5060405161154238038061154283398101604081905261002f91610255565b6040805180820190915260018152603160f81b602082015282908190818460036100598382610338565b5060046100668282610338565b5061007691508390506005610123565b61012052610085816006610123565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525061044c915050565b5f60208351101561013e5761013783610155565b905061014f565b816101498482610338565b5060ff90505b92915050565b5f80829050601f81511115610188578260405163305a27a960e01b815260040161017f91906103f7565b60405180910390fd5b805161019382610429565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101c95781810151838201526020016101b1565b50505f910152565b5f82601f8301126101e0575f80fd5b81516001600160401b03808211156101fa576101fa61019b565b604051601f8301601f19908116603f011681019082821181831017156102225761022261019b565b8160405283815286602085880101111561023a575f80fd5b61024b8460208301602089016101af565b9695505050505050565b5f8060408385031215610266575f80fd5b82516001600160401b038082111561027c575f80fd5b610288868387016101d1565b9350602085015191508082111561029d575f80fd5b506102aa858286016101d1565b9150509250929050565b600181811c908216806102c857607f821691505b6020821081036102e657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561033357805f5260205f20601f840160051c810160208510156103115750805b601f840160051c820191505b81811015610330575f815560010161031d565b50505b505050565b81516001600160401b038111156103515761035161019b565b6103658161035f84546102b4565b846102ec565b602080601f831160018114610398575f84156103815750858301515b5f19600386901b1c1916600185901b1785556103ef565b5f85815260208120601f198616915b828110156103c6578886015182559484019460019091019084016103a7565b50858210156103e357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f82518060208401526104158160408501602087016101af565b601f01601f19169190910160400192915050565b805160208083015191908110156102e6575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516110a561049d5f395f6108c401525f61089701525f61080c01525f6107e401525f61073f01525f61076901525f61079301526110a55ff3fe6080604052600436106100ef575f3560e01c806370a0823111610087578063a9059cbb11610057578063a9059cbb14610286578063d0e30db0146102a5578063d505accf146102ad578063dd62ed3e146102cc575f80fd5b806370a08231146101f85780637ecebe001461022c57806384b0196e1461024b57806395d89b4114610272575f80fd5b80632e1a7d4d116100c25780632e1a7d4d14610189578063313ce567146101aa5780633644e515146101c557806340c10f19146101d9575f80fd5b806306fdde03146100f3578063095ea7b31461011d57806318160ddd1461014c57806323b872dd1461016a575b5f80fd5b3480156100fe575f80fd5b50610107610310565b6040516101149190610e0a565b60405180910390f35b348015610128575f80fd5b5061013c610137366004610e3e565b6103a0565b6040519015158152602001610114565b348015610157575f80fd5b506002545b604051908152602001610114565b348015610175575f80fd5b5061013c610184366004610e66565b6103b9565b348015610194575f80fd5b506101a86101a3366004610e9f565b6103dc565b005b3480156101b5575f80fd5b5060405160128152602001610114565b3480156101d0575f80fd5b5061015c61043b565b3480156101e4575f80fd5b506101a86101f3366004610e3e565b610449565b348015610203575f80fd5b5061015c610212366004610eb6565b6001600160a01b03165f9081526020819052604090205490565b348015610237575f80fd5b5061015c610246366004610eb6565b610453565b348015610256575f80fd5b5061025f610470565b6040516101149796959493929190610ecf565b34801561027d575f80fd5b506101076104b2565b348015610291575f80fd5b5061013c6102a0366004610e3e565b6104c1565b6101a86104ce565b3480156102b8575f80fd5b506101a86102c7366004610f66565b6104da565b3480156102d7575f80fd5b5061015c6102e6366004610fd3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461031f90611004565b80601f016020809104026020016040519081016040528092919081815260200182805461034b90611004565b80156103965780601f1061036d57610100808354040283529160200191610396565b820191905f5260205f20905b81548152906001019060200180831161037957829003601f168201915b5050505050905090565b5f336103ad818585610615565b60019150505b92915050565b5f336103c6858285610627565b6103d18585856106a2565b506001949350505050565b6103e633826106ff565b6040515f90339083908381818185875af1925050503d805f8114610425576040519150601f19603f3d011682016040523d82523d5f602084013e61042a565b606091505b5050905080610437575f80fd5b5050565b5f610444610733565b905090565b610437828261085c565b6001600160a01b0381165f908152600760205260408120546103b3565b5f6060805f805f6060610481610890565b6104896108bd565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60606004805461031f90611004565b5f336103ad8185856106a2565b6104d8333461085c565b565b834211156105035760405163313c898160e11b8152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861054e8c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6105a8826108ea565b90505f6105b782878787610916565b9050896001600160a01b0316816001600160a01b0316146105fe576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104fa565b6106098a8a8a610615565b50505050505050505050565b6106228383836001610942565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461069c578181101561068e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104fa565b61069c84848484035f610942565b50505050565b6001600160a01b0383166106cb57604051634b637e8f60e11b81525f60048201526024016104fa565b6001600160a01b0382166106f45760405163ec442f0560e01b81525f60048201526024016104fa565b610622838383610a14565b6001600160a01b03821661072857604051634b637e8f60e11b81525f60048201526024016104fa565b610437825f83610a14565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561078b57507f000000000000000000000000000000000000000000000000000000000000000046145b156107b557507f000000000000000000000000000000000000000000000000000000000000000090565b610444604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108855760405163ec442f0560e01b81525f60048201526024016104fa565b6104375f8383610a14565b60606104447f00000000000000000000000000000000000000000000000000000000000000006005610b3a565b60606104447f00000000000000000000000000000000000000000000000000000000000000006006610b3a565b5f6103b36108f6610733565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f8061092688888888610be3565b9250925092506109368282610cab565b50909695505050505050565b6001600160a01b03841661096b5760405163e602df0560e01b81525f60048201526024016104fa565b6001600160a01b03831661099457604051634a1406b160e11b81525f60048201526024016104fa565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561069c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a0691815260200190565b60405180910390a350505050565b6001600160a01b038316610a3e578060025f828254610a33919061103c565b90915550610aae9050565b6001600160a01b0383165f9081526020819052604090205481811015610a905760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104fa565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610aca57600280548290039055610ae8565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b2d91815260200190565b60405180910390a3505050565b606060ff8314610b5457610b4d83610d63565b90506103b3565b818054610b6090611004565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8c90611004565b8015610bd75780601f10610bae57610100808354040283529160200191610bd7565b820191905f5260205f20905b815481529060010190602001808311610bba57829003601f168201915b505050505090506103b3565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c1c57505f91506003905082610ca1565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c6d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c9857505f925060019150829050610ca1565b92505f91508190505b9450945094915050565b5f826003811115610cbe57610cbe61105b565b03610cc7575050565b6001826003811115610cdb57610cdb61105b565b03610cf95760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d0d57610d0d61105b565b03610d2e5760405163fce698f760e01b8152600481018290526024016104fa565b6003826003811115610d4257610d4261105b565b03610437576040516335e2f38360e21b8152600481018290526024016104fa565b60605f610d6f83610da0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f8111156103b357604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610deb57602081850181015186830182015201610dcf565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610e1c6020830184610dc7565b9392505050565b80356001600160a01b0381168114610e39575f80fd5b919050565b5f8060408385031215610e4f575f80fd5b610e5883610e23565b946020939093013593505050565b5f805f60608486031215610e78575f80fd5b610e8184610e23565b9250610e8f60208501610e23565b9150604084013590509250925092565b5f60208284031215610eaf575f80fd5b5035919050565b5f60208284031215610ec6575f80fd5b610e1c82610e23565b60ff60f81b881681525f602060e06020840152610eef60e084018a610dc7565b8381036040850152610f01818a610dc7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f5457835183529284019291840191600101610f38565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f7c575f80fd5b610f8588610e23565b9650610f9360208901610e23565b95506040880135945060608801359350608088013560ff81168114610fb6575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fe4575f80fd5b610fed83610e23565b9150610ffb60208401610e23565b90509250929050565b600181811c9082168061101857607f821691505b60208210810361103657634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156103b357634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212205f0d75d01d4c7b495752ee34d58d807f144db2365354bf4134f9adf19cf64f9764736f6c6343000819003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d577261707065642045746865720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045745544800000000000000000000000000000000000000000000000000000000