@etherisc/terraguard-poc-contracts
Version:
Etherisc's smart contracts for the terraguard poc
1,155 lines • 208 kB
JSON
{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"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": [],
"name": "DECIMALS",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INITIAL_SUPPLY",
"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": "SYMBOL",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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": "amount",
"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": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"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": "amount",
"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": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"allSourcePaths": {
"1": "/home/runner/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/ERC20.sol",
"2": "/home/runner/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/IERC20.sol",
"3": "/home/runner/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"36": "contracts/token/Usdc.sol",
"5": "/home/runner/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Context.sol"
},
"ast": {
"absolutePath": "contracts/token/Usdc.sol",
"exportedSymbols": {
"Context": [
6682
],
"ERC20": [
4616
],
"IERC20": [
4694
],
"IERC20Metadata": [
3983
],
"Usdc": [
2149
]
},
"id": 2150,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 2108,
"literals": [
"solidity",
"^",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:23:36"
},
{
"absolutePath": "/home/runner/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/ERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
"id": 2109,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 2150,
"sourceUnit": 4617,
"src": "64:55:36",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 2110,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 4616,
"src": "138:5:36"
},
"id": 2111,
"nodeType": "InheritanceSpecifier",
"src": "138:5:36"
}
],
"contractDependencies": [
3983,
4616,
4694,
6682
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 2149,
"linearizedBaseContracts": [
2149,
4616,
3983,
4694,
6682
],
"name": "Usdc",
"nameLocation": "130:4:36",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "a3f4df7e",
"id": 2114,
"mutability": "constant",
"name": "NAME",
"nameLocation": "271:4:36",
"nodeType": "VariableDeclaration",
"scope": 2149,
"src": "248:48:36",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 2112,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "248:6:36",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "55534420436f696e202d2044554d4d59",
"id": 2113,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "278:18:36",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f1f77fb2c2c60421f2302e24a7e4cd9881e813fbb52a287a66078d21b2506554",
"typeString": "literal_string \"USD Coin - DUMMY\""
},
"value": "USD Coin - DUMMY"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "f76f8d78",
"id": 2117,
"mutability": "constant",
"name": "SYMBOL",
"nameLocation": "325:6:36",
"nodeType": "VariableDeclaration",
"scope": 2149,
"src": "302:38:36",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 2115,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "302:6:36",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "55534443",
"id": 2116,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "334:6:36",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d6aca1be9729c13d677335161321649cccae6a591554772516700f986f942eaa",
"typeString": "literal_string \"USDC\""
},
"value": "USDC"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "2e0f2625",
"id": 2120,
"mutability": "constant",
"name": "DECIMALS",
"nameLocation": "368:8:36",
"nodeType": "VariableDeclaration",
"scope": 2149,
"src": "346:34:36",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 2118,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "346:5:36",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"hexValue": "36",
"id": 2119,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "379:1:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_6_by_1",
"typeString": "int_const 6"
},
"value": "6"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "2ff2e9dc",
"id": 2125,
"mutability": "constant",
"name": "INITIAL_SUPPLY",
"nameLocation": "411:14:36",
"nodeType": "VariableDeclaration",
"scope": 2149,
"src": "387:47:36",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2121,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "387:7:36",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
},
"id": 2124,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3130",
"id": 2122,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "428:2:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"hexValue": "3234",
"id": 2123,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "432:2:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"src": "428:6:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
}
},
"visibility": "public"
},
{
"body": {
"id": 2138,
"nodeType": "Block",
"src": "487:86:36",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 2133,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6672,
"src": "516:10:36",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 2134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "516:12:36",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2135,
"name": "INITIAL_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2125,
"src": "542:14:36",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2132,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4433,
"src": "497:5:36",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 2136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "497:69:36",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2137,
"nodeType": "ExpressionStatement",
"src": "497:69:36"
}
]
},
"id": 2139,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 2128,
"name": "NAME",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2114,
"src": "469:4:36",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 2129,
"name": "SYMBOL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2117,
"src": "475:6:36",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"id": 2130,
"modifierName": {
"id": 2127,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 4616,
"src": "463:5:36"
},
"nodeType": "ModifierInvocation",
"src": "463:19:36"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 2126,
"nodeType": "ParameterList",
"parameters": [],
"src": "452:2:36"
},
"returnParameters": {
"id": 2131,
"nodeType": "ParameterList",
"parameters": [],
"src": "487:0:36"
},
"scope": 2149,
"src": "441:132:36",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
4104
],
"body": {
"id": 2147,
"nodeType": "Block",
"src": "635:32:36",
"statements": [
{
"expression": {
"id": 2145,
"name": "DECIMALS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2120,
"src": "652:8:36",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 2144,
"id": 2146,
"nodeType": "Return",
"src": "645:15:36"
}
]
},
"functionSelector": "313ce567",
"id": 2148,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decimals",
"nameLocation": "588:8:36",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 2141,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "611:8:36"
},
"parameters": {
"id": 2140,
"nodeType": "ParameterList",
"parameters": [],
"src": "596:2:36"
},
"returnParameters": {
"id": 2144,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2143,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2148,
"src": "628:5:36",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 2142,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "628:5:36",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "627:7:36"
},
"scope": 2149,
"src": "579:88:36",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 2150,
"src": "121:548:36"
}
],
"src": "39:631:36"
},
"bytecode": "60806040523480156200001157600080fd5b50604080518082018252601081526f55534420436f696e202d2044554d4d5960801b6020808301918252835180850190945260048452635553444360e01b908401528151919291620000669160039162000174565b5080516200007c90600490602084019062000174565b505050620000a462000093620000aa60201b60201c565b69d3c21bcecceda1000000620000ae565b6200027c565b3390565b6001600160a01b038216620001095760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200011d91906200021a565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000182906200023f565b90600052602060002090601f016020900481019282620001a65760008555620001f1565b82601f10620001c157805160ff1916838001178555620001f1565b82800160010185558215620001f1579182015b82811115620001f1578251825591602001919060010190620001d4565b50620001ff92915062000203565b5090565b5b80821115620001ff576000815560010162000204565b600082198211156200023a57634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806200025457607f821691505b602082108114156200027657634e487b7160e01b600052602260045260246000fd5b50919050565b61091a806200028c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633950935111610097578063a457c2d711610066578063a457c2d7146101ef578063a9059cbb14610202578063dd62ed3e14610215578063f76f8d7814610228576100f5565b8063395093511461019257806370a08231146101a557806395d89b41146101b8578063a3f4df7e146101c0576100f5565b806323b872dd116100d357806323b872dd1461014d5780632e0f2625146101605780632ff2e9dc1461017a578063313ce5671461018b576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261024b565b60405161010f9190610832565b60405180910390f35b61012b610126366004610809565b6102dd565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046107ce565b6102f5565b610168600681565b60405160ff909116815260200161010f565b61013f69d3c21bcecceda100000081565b6006610168565b61012b6101a0366004610809565b610319565b61013f6101b336600461077b565b61033b565b61010261035a565b6101026040518060400160405280601081526020016f55534420436f696e202d2044554d4d5960801b81525081565b61012b6101fd366004610809565b610369565b61012b610210366004610809565b6103e9565b61013f61022336600461079c565b6103f7565b610102604051806040016040528060048152602001635553444360e01b81525081565b60606003805461025a906108a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610286906108a9565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb818585610422565b5060019392505050565b600033610303858285610546565b61030e8585856105c0565b506001949350505050565b6000336102eb81858561032c83836103f7565b6103369190610885565b610422565b6001600160a01b0381166000908152602081905260409020545b919050565b60606004805461025a906108a9565b6000338161037782866103f7565b9050838110156103dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61030e8286868403610422565b6000336102eb8185856105c0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104845760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d3565b6001600160a01b0382166104e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061055284846103f7565b905060001981146105ba57818110156105ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d3565b6105ba8484848403610422565b50505050565b6001600160a01b0383166106245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d3565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d3565b6001600160a01b038316600090815260208190526040902054818110156106fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d3565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105ba565b80356001600160a01b038116811461035557600080fd5b60006020828403121561078c578081fd5b61079582610764565b9392505050565b600080604083850312156107ae578081fd5b6107b783610764565b91506107c560208401610764565b90509250929050565b6000806000606084860312156107e2578081fd5b6107eb84610764565b92506107f960208501610764565b9150604084013590509250925092565b6000806040838503121561081b578182fd5b61082483610764565b946020939093013593505050565b6000602080835283518082850152825b8181101561085e57858101830151858201604001528201610842565b8181111561086f5783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156108a457634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806108bd57607f821691505b602082108114156108de57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220e2280e432eca18309a581c0d007a9ce41cd58b1bda93578c3d857933e845768c64736f6c63430008020033",
"bytecodeSha1": "e17e668f595d36dd9e1b05f7f4823f1213401730",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "Usdc",
"coverageMap": {
"branches": {
"1": {
"ERC20._approve": {
"29": [
10635,
10654,
true
],
"30": [
10713,
10734,
true
]
},
"ERC20._spendAllowance": {
"31": [
11351,
11388,
false
],
"32": [
11412,
11438,
true
]
},
"ERC20._transfer": {
"33": [
7599,
7617,
true
],
"34": [
7677,
7693,
true
],
"35": [
7848,
7869,
true
]
},
"ERC20.decreaseAllowance": {
"28": [
6809,
6844,
true
]
}
},
"2": {},
"3": {},
"36": {},
"5": {}
},
"statements": {
"1": {
"ERC20._approve": {
"15": [
10627,
10695
],
"16": [
10705,
10773
],
"17": [
10784,
10820
],
"18": [
10830,
10867
]
},
"ERC20._spendAllowance": {
"19": [
11404,
11472
],
"20": [
11514,
11565
]
},
"ERC20._transfer": {
"21": [
7591,
7659
],
"22": [
7669,
7733
],
"23": [
7840,
7912
],
"24": [
7946,
7984
],
"25": [
8161,
8184
],
"26": [
8205,
8236
],
"27": [
8247,
8284
]
},
"ERC20.allowance": {
"14": [
4082,
4116
]
},
"ERC20.approve": {
"3": [
4568,
4600
],
"4": [
4610,
4621
]
},
"ERC20.balanceOf": {
"9": [
3499,
3524
]
},
"ERC20.decreaseAllowance": {
"11": [
6801,
6886
],
"12": [
6920,
6980
]
},
"ERC20.increaseAllowance": {
"8": [
6013,
6077
]
},
"ERC20.name": {
"1": [
2233,
2245
]
},
"ERC20.symbol": {
"10": [
2446,
2460
]
},
"ERC20.totalSupply": {
"0": [
3322,
3341
]
},
"ERC20.transfer": {
"13": [
3860,
3888
]
},
"ERC20.transferFrom": {
"5": [
5373,
5411
],
"6": [
5421,
5448
],
"7": [
5458,
5469
]
}
},
"2": {},
"3": {},
"36": {},
"5": {
"Context._msgSender": {
"2": [
712,
729
]
}
}
}
},
"dependencies": [
"OpenZeppelin/openzeppelin-contracts@4.8.2/Context",
"OpenZeppelin/openzeppelin-contracts@4.8.2/ERC20",
"OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20",
"OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20Metadata"
],
"deployedBytecode": "608060405234801561001057600080fd5b50600436106100f55760003560e01c80633950935111610097578063a457c2d711610066578063a457c2d7146101ef578063a9059cbb14610202578063dd62ed3e14610215578063f76f8d7814610228576100f5565b8063395093511461019257806370a08231146101a557806395d89b41146101b8578063a3f4df7e146101c0576100f5565b806323b872dd116100d357806323b872dd1461014d5780632e0f2625146101605780632ff2e9dc1461017a578063313ce5671461018b576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261024b565b60405161010f9190610832565b60405180910390f35b61012b610126366004610809565b6102dd565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046107ce565b6102f5565b610168600681565b60405160ff909116815260200161010f565b61013f69d3c21bcecceda100000081565b6006610168565b61012b6101a0366004610809565b610319565b61013f6101b336600461077b565b61033b565b61010261035a565b6101026040518060400160405280601081526020016f55534420436f696e202d2044554d4d5960801b81525081565b61012b6101fd366004610809565b610369565b61012b610210366004610809565b6103e9565b61013f61022336600461079c565b6103f7565b610102604051806040016040528060048152602001635553444360e01b81525081565b60606003805461025a906108a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610286906108a9565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb818585610422565b5060019392505050565b600033610303858285610546565b61030e8585856105c0565b506001949350505050565b6000336102eb81858561032c83836103f7565b6103369190610885565b610422565b6001600160a01b0381166000908152602081905260409020545b919050565b60606004805461025a906108a9565b6000338161037782866103f7565b9050838110156103dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61030e8286868403610422565b6000336102eb8185856105c0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104845760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d3565b6001600160a01b0382166104e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061055284846103f7565b905060001981146105ba57818110156105ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d3565b6105ba8484848403610422565b50505050565b6001600160a01b0383166106245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d3565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d3565b6001600160a01b038316600090815260208190526040902054818110156106fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d3565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105ba565b80356001600160a01b038116811461035557600080fd5b60006020828403121561078c578081fd5b61079582610764565b9392505050565b600080604083850312156107ae578081fd5b6107b783610764565b91506107c560208401610764565b90509250929050565b6000806000606084860312156107e2578081fd5b6107eb84610764565b92506107f960208501610764565b9150604084013590509250925092565b6000806040838503121561081b578182fd5b61082483610764565b946020939093013593505050565b6000602080835283518082850152825b8181101561085e57858101830151858201604001528201610842565b8181111561086f5783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156108a457634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806108bd57607f821691505b602082108114156108de57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220e2280e432eca18309a581c0d007a9ce41cd58b1bda93578c3d857933e845768c64736f6c63430008020033",
"deployedSourceMap": "121:548:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;:::i;:::-;;:::i;:::-;;;1445:14:37;;1438:22;1420:41;;1408:2;1393:18;4431:197:1;1375:92:37;3242:106:1;3329:12;;3242:106;;;5015:25:37;;;5003:2;4988:18;3242:106:1;4970:76:37;5190:286:1;;;;;;:::i;:::-;;:::i;346:34:36:-;;379:1;346:34;;;;;5223:4:37;5211:17;;;5193:36;;5181:2;5166:18;346:34:36;5148:87:37;387:47:36;;428:6;387:47;;579:88;379:1;579:88;;5871:234:1;;;;;;:::i;:::-;;:::i;3406:125::-;;;;;;:::i;:::-;;:::i;2365:102::-;;;:::i;248:48:36:-;;;;;;;;;;;;;;;-1:-1:-1;;;248:48:36;;;;;6592:427:1;;;;;;:::i;:::-;;:::i;3727:189::-;;;;;;:::i;:::-;;:::i;3974:149::-;;;;;;:::i;:::-;;:::i;302:38:36:-;;;;;;;;;;;;;;;-1:-1:-1;;;302:38:36;;;;;2154:98:1;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;719:10:5;4568:32:1;719:10:5;4584:7:1;4593:6;4568:8;:32::i;:::-;-1:-1:-1;4617:4:1;;4431:197;-1:-1:-1;;;4431:197:1:o;5190:286::-;5317:4;719:10:5;5373:38:1;5389:4;719:10:5;5404:6:1;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;-1:-1:-1;5465:4:1;;5190:286;-1:-1:-1;;;;5190:286:1:o;5871:234::-;5959:4;719:10:5;6013:64:1;719:10:5;6029:7:1;6066:10;6038:25;719:10:5;6029:7:1;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;3406:125::-;-1:-1:-1;;;;;3506:18:1;;3480:7;3506:18;;;;;;;;;;;3406:125;;;;:::o;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;6592:427::-;6685:4;719:10:5;6685:4:1;6766:25;719:10:5;6783:7:1;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;-1:-1:-1;;;6801:85:1;;4665:2:37;6801:85:1;;;4647:21:37;4704:2;4684:18;;;4677:30;4743:34;4723:18;;;4716:62;-1:-1:-1;;;4794:18:37;;;4787:35;4839:19;;6801:85:1;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;3727:189::-;3806:4;719:10:5;3860:28:1;719:10:5;3877:2:1;3881:6;3860:9;:28::i;3974:149::-;-1:-1:-1;;;;;4089:18:1;;;4063:7;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3974:149::o;10504:370::-;-1:-1:-1;;;;;10635:19:1;;10627:68;;;;-1:-1:-1;;;10627:68:1;;4260:2:37;10627:68:1;;;4242:21:37;4299:2;4279:18;;;4272:30;4338:34;4318:18;;;4311:62;-1:-1:-1;;;4389:18:37;;;4382:34;4433:19;;10627:68:1;4232:226:37;10627:68:1;-1:-1:-1;;;;;10713:21:1;;10705:68;;;;-1:-1:-1;;;10705:68:1;;2686:2:37;10705:68:1;;;2668:21:37;2725:2;2705:18;;;2698:30;2764:34;2744:18;;;2737:62;-1:-1:-1;;;2815:18:37;;;2808:32;2857:19;;10705:68:1;2658:224:37;10705:68:1;-1:-1:-1;;;;;10784:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10835:32;;5015:25:37;;;10835:32:1;;4988:18:37;10835:32:1;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;-1:-1:-1;;11351:16:1;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;-1:-1:-1;;;11404:68:1;;3089:2:37;11404:68:1;;;3071:21:37;3128:2;3108:18;;;3101:30;3167:31;3147:18;;;3140:59;3216:18;;11404:68:1;3061:179:37;11404:68:1;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11155:441;;;;:::o;7473:818::-;-1:-1:-1;;;;;7599:18:1;;7591:68;;;;-1:-1:-1;;;7591:68:1;;3854:2:37;7591:68:1;;;3836:21:37;3893:2;3873:18;;;3866:30;3932:34;3912:18;;;3905:62;-1:-1:-1;;;3983:18:37;;;3976:35;4028:19;;7591:68:1;3826:227:37;7591:68:1;-1:-1:-1;;;;;7677:16:1;;7669:64;;;;-1:-1:-1;;;7669:64:1;;2282:2:37;7669:64:1;;;2264:21:37;2321:2;2301:18;;;2294:30;2360:34;2340:18;;;2333:62;-1:-1:-1;;;2411:18:37;;;2404:33;2454:19;;7669:64:1;2254:225:37;7669:64:1;-1:-1:-1;;;;;7815:15:1;;7793:19;7815:15;;;;;;;;;;;7848:21;;;;7840:72;;;;-1:-1:-1;;;7840:72:1;;3447:2:37;7840:72:1;;;3429:21:37;3486:2;3466:18;;;3459:30;3525:34;3505:18;;;3498:62;-1:-1:-1;;;3576:18:37;;;3569:36;3622:19;;7840:72:1;3419:228:37;7840:72:1;-1:-1:-1;;;;;7946:15:1;;;:9;:15;;;;;;;;;;;7964:20;;;7946:38;;8161:13;;;;;;;;;;:23;;;;;;8210:26;;5015:25:37;;;8161:13:1;;8210:26;;4988:18:37;8210:26:1;;;;;;;8247:37;12180:121;14:173:37;82:20;;-1:-1:-1;;;;;131:31:37;;121:42;;111:2;;177:1;174;167:12;192:196;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:37:o;393:270::-;;;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;;;;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;;;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:37:o;1472:603::-;;1613:2;1642;1631:9;1624:21;1674:6;1668:13;1717:6;1712:2;1701:9;1697:18;1690:34;1742:4;1755:140;1769:6;1766:1;1763:13;1755:140;;;1864:14;;;1860:23;;1854:30;1830:17;;;1849:2;1826:26;1819:66;1784:10;;1755:140;;;1913:6;1910:1;1907:13;1904:2;;;1983:4;1978:2;1969:6;1958:9;1954:22;1950:31;1943:45;1904:2;-1:-1:-1;2059:2:37;2038:15;-1:-1:-1;;2034:29:37;2019:45;;;;2066:2;2015:54;;1593:482;-1:-1:-1;;;1593:482:37:o;5240:229::-;;5311:1;5307:6;5304:1;5301:13;5298:2;;;-1:-1:-1;;;5337:33:37;;5393:4;5390:1;5383:15;5423:4;5344:3;5411:17;5298:2;-1:-1:-1;5454:9:37;;5288:181::o;5474:380::-;5559:1;5549:12;;5606:1;5596:12;;;5617:2;;5671:4;5663:6;5659:17;5649:27;;5617:2;5724;5716:6;5713:14;5693:18;5690:38;5687:2;;;5770:10;5765:3;5761:20;5758:1;5751:31;5805:4;5802:1;5795:15;5833:4;5830:1;5823:15;5687:2;;5529:325;;;:::o",
"language": "Solidity",
"natspec": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
}
},
"version": 1
},
"offset": [
121,
669
],
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xF76F8D78 EQ PUSH2 0x228 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xA3F4DF7E EQ PUSH2 0x1C0 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x2E0F2625 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x2FF2E9DC EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x18B JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x13B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x24B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x809 JUMP JUMPDEST PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MS