{
    "contractName": "TestDecimalsToken",
    "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": [
                {
                    "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": [
                {
                    "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"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "mint",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint8",
                    "name": "_dec",
                    "type": "uint8"
                }
            ],
            "name": "setDecimals",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"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\":[{\"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\":\"view\",\"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\":[{\"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\":\"uint8\",\"name\":\"_dec\",\"type\":\"uint8\"}],\"name\":\"setDecimals\",\"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\":\"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\"}],\"devdoc\":{\"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},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestDecimalsToken.sol\":\"TestDecimalsToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/alexf/gsn2/packages/contracts/solpp/test/TestDecimalsToken.sol\":{\"keccak256\":\"0xb42d323799a045876df03072de934bb9a583566481d2bcf2cfdc473e4a7d42cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78e88cb82c1cad8b2f43e9d2f01478379b070e836b486c651a4a17774d5fd217\",\"dweb:/ipfs/QmTQqzNKKTrBpdaxtAN5CQ4R8tWKXse8CekYDDseZZaFdq\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
    "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b8152506040518060400160405280600381526020016244454360e81b81525081600390805190602001906200006992919062000199565b5080516200007f90600490602084019062000199565b5050506200009c68056bc75e2d63100000620000a260201b60201c565b620002a3565b620000ae3382620000b1565b50565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200012091906200023f565b90915550506001600160a01b038216600090815260208190526040812080548392906200014f9084906200023f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a79062000266565b90600052602060002090601f016020900481019282620001cb576000855562000216565b82601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b600082198211156200026157634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200027b57607f821691505b602082108114156200029d57634e487b7160e01b600052602260045260246000fd5b50919050565b610a1480620002b36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d68146101b9578063a457c2d7146101cc578063a9059cbb146101df578063dd62ed3e146101f257600080fd5b806370a08231146101625780637a1395aa1461018b57806395d89b41146101b157600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461014f575b600080fd5b6100dc610205565b6040516100e99190610928565b60405180910390f35b6101056101003660046108c2565b610297565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b610105610135366004610886565b6102af565b60055460405160ff90911681526020016100e9565b61010561015d3660046108c2565b6102d3565b610119610170366004610831565b6001600160a01b031660009081526020819052604090205490565b6101af610199366004610905565b6005805460ff191660ff92909216919091179055565b005b6100dc6102f5565b6101af6101c73660046108ec565b610304565b6101056101da3660046108c2565b610311565b6101056101ed3660046108c2565b610391565b610119610200366004610853565b61039f565b606060038054610214906109a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610240906109a3565b801561028d5780601f106102625761010080835404028352916020019161028d565b820191906000526020600020905b81548152906001019060200180831161027057829003601f168201915b5050505050905090565b6000336102a58185856103ca565b5060019392505050565b6000336102bd8582856104ee565b6102c8858585610568565b506001949350505050565b6000336102a58185856102e6838361039f565b6102f0919061097d565b6103ca565b606060048054610214906109a3565b61030e3382610736565b50565b6000338161031f828661039f565b9050838110156103845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102c882868684036103ca565b6000336102a5818585610568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037b565b6001600160a01b03821661048d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104fa848461039f565b9050600019811461056257818110156105555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037b565b61056284848484036103ca565b50505050565b6001600160a01b0383166105cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037b565b6001600160a01b03821661062e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037b565b6001600160a01b038316600090815260208190526040902054818110156106a65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106dd90849061097d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072991815260200190565b60405180910390a3610562565b6001600160a01b03821661078c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161037b565b806002600082825461079e919061097d565b90915550506001600160a01b038216600090815260208190526040812080548392906107cb90849061097d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80356001600160a01b038116811461082c57600080fd5b919050565b60006020828403121561084357600080fd5b61084c82610815565b9392505050565b6000806040838503121561086657600080fd5b61086f83610815565b915061087d60208401610815565b90509250929050565b60008060006060848603121561089b57600080fd5b6108a484610815565b92506108b260208501610815565b9150604084013590509250925092565b600080604083850312156108d557600080fd5b6108de83610815565b946020939093013593505050565b6000602082840312156108fe57600080fd5b5035919050565b60006020828403121561091757600080fd5b813560ff8116811461084c57600080fd5b600060208083528351808285015260005b8181101561095557858101830151858201604001528201610939565b81811115610967576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561099e57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806109b757607f821691505b602082108114156109d857634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220db9bec1853f0327a7ad14734c48888cc691f968e2ab83eeb21b45e88a951537b64736f6c63430008070033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d68146101b9578063a457c2d7146101cc578063a9059cbb146101df578063dd62ed3e146101f257600080fd5b806370a08231146101625780637a1395aa1461018b57806395d89b41146101b157600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461014f575b600080fd5b6100dc610205565b6040516100e99190610928565b60405180910390f35b6101056101003660046108c2565b610297565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b610105610135366004610886565b6102af565b60055460405160ff90911681526020016100e9565b61010561015d3660046108c2565b6102d3565b610119610170366004610831565b6001600160a01b031660009081526020819052604090205490565b6101af610199366004610905565b6005805460ff191660ff92909216919091179055565b005b6100dc6102f5565b6101af6101c73660046108ec565b610304565b6101056101da3660046108c2565b610311565b6101056101ed3660046108c2565b610391565b610119610200366004610853565b61039f565b606060038054610214906109a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610240906109a3565b801561028d5780601f106102625761010080835404028352916020019161028d565b820191906000526020600020905b81548152906001019060200180831161027057829003601f168201915b5050505050905090565b6000336102a58185856103ca565b5060019392505050565b6000336102bd8582856104ee565b6102c8858585610568565b506001949350505050565b6000336102a58185856102e6838361039f565b6102f0919061097d565b6103ca565b606060048054610214906109a3565b61030e3382610736565b50565b6000338161031f828661039f565b9050838110156103845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102c882868684036103ca565b6000336102a5818585610568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037b565b6001600160a01b03821661048d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104fa848461039f565b9050600019811461056257818110156105555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037b565b61056284848484036103ca565b50505050565b6001600160a01b0383166105cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037b565b6001600160a01b03821661062e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037b565b6001600160a01b038316600090815260208190526040902054818110156106a65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106dd90849061097d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072991815260200190565b60405180910390a3610562565b6001600160a01b03821661078c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161037b565b806002600082825461079e919061097d565b90915550506001600160a01b038216600090815260208190526040812080548392906107cb90849061097d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80356001600160a01b038116811461082c57600080fd5b919050565b60006020828403121561084357600080fd5b61084c82610815565b9392505050565b6000806040838503121561086657600080fd5b61086f83610815565b915061087d60208401610815565b90509250929050565b60008060006060848603121561089b57600080fd5b6108a484610815565b92506108b260208501610815565b9150604084013590509250925092565b600080604083850312156108d557600080fd5b6108de83610815565b946020939093013593505050565b6000602082840312156108fe57600080fd5b5035919050565b60006020828403121561091757600080fd5b813560ff8116811461084c57600080fd5b600060208083528351808285015260005b8181101561095557858101830151858201604001528201610939565b81811115610967576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561099e57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806109b757607f821691505b602082108114156109d857634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220db9bec1853f0327a7ad14734c48888cc691f968e2ab83eeb21b45e88a951537b64736f6c63430008070033",
    "immutableReferences": {},
    "sourceMap": "114:413:21:-:0;;;157:73;;;;;;;;;;1978:113:49;;;;;;;;;;;;;-1:-1:-1;;;1978:113:49;;;;;;;;;;;;;;;;-1:-1:-1;;;1978:113:49;;;2052:5;2044;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2067:17:49;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;208:15:21::1;213:9;208:4;;;:15;;:::i;:::-;114:413:::0;;236:76;280:25;286:10;298:6;280:5;:25::i;:::-;236:76;:::o;8402:389:49:-;-1:-1:-1;;;;;8485:21:49;;8477:65;;;;-1:-1:-1;;;8477:65:49;;216:2:63;8477:65:49;;;198:21:63;255:2;235:18;;;228:30;294:33;274:18;;;267:61;345:18;;8477:65:49;;;;;;;;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8645:18:49;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:49;;520:25:63;;;-1:-1:-1;;;;;8688:37:49;;;8705:1;;8688:37;;508:2:63;493:18;8688:37:49;;;;;;;8402:389;;:::o;114:413:21:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;114:413:21;;;-1:-1:-1;114:413:21;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;556:225:63;596:3;627:1;623:6;620:1;617:13;614:136;;;672:10;667:3;663:20;660:1;653:31;707:4;704:1;697:15;735:4;732:1;725:15;614:136;-1:-1:-1;766:9:63;;556:225::o;786:380::-;865:1;861:12;;;;908;;;929:61;;983:4;975:6;971:17;961:27;;929:61;1036:2;1028:6;1025:14;1005:18;1002:38;999:161;;;1082:10;1077:3;1073:20;1070:1;1063:31;1117:4;1114:1;1107:15;1145:4;1142:1;1135:15;999:161;;786:380;;;:::o;:::-;114:413:21;;;;;;",
    "deployedSourceMap": "114:413:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1864:14:63;;1857:22;1839:41;;1827:2;1812:18;4433:197:49;1699:187:63;3244:106:49;3331:12;;3244:106;;;5788:25:63;;;5776:2;5761:18;3244:106:49;5642:177:63;5192:286:49;;;;;;:::i;:::-;;:::i;348:98:21:-;430:9;;348:98;;430:9;;;;5966:36:63;;5954:2;5939:18;348:98:21;5824:184:63;5873:234:49;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:49;3482:7;3508:18;;;;;;;;;;;;3408:125;452:73:21;;;;;;:::i;:::-;502:9;:16;;-1:-1:-1;;502:16:21;;;;;;;;;;;;452:73;;;2367:102:49;;;:::i;236:76:21:-;;;;;;:::i;:::-;;:::i;6594:427:49:-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:55;4570:32:49;719:10:55;4586:7:49;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:49;;4433:197;-1:-1:-1;;;4433:197:49:o;5192:286::-;5319:4;719:10:55;5375:38:49;5391:4;719:10:55;5406:6:49;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:49;;5192:286;-1:-1:-1;;;;5192:286:49:o;5873:234::-;5961:4;719:10:55;6015:64:49;719:10:55;6031:7:49;6068:10;6040:25;719:10:55;6031:7:49;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;236:76:21:-;280:25;286:10;298:6;280:5;:25::i;:::-;236:76;:::o;6594:427:49:-;6687:4;719:10:55;6687:4:49;6768:25;719:10:55;6785:7:49;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:49;;5078:2:63;6803:85:49;;;5060:21:63;5117:2;5097:18;;;5090:30;5156:34;5136:18;;;5129:62;-1:-1:-1;;;5207:18:63;;;5200:35;5252:19;;6803:85:49;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:55;3862:28:49;719:10:55;3879:2:49;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:49;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:49;;10233:68;;;;-1:-1:-1;;;10233:68:49;;4673:2:63;10233:68:49;;;4655:21:63;4712:2;4692:18;;;4685:30;4751:34;4731:18;;;4724:62;-1:-1:-1;;;4802:18:63;;;4795:34;4846:19;;10233:68:49;4471:400:63;10233:68:49;-1:-1:-1;;;;;10319:21:49;;10311:68;;;;-1:-1:-1;;;10311:68:49;;3099:2:63;10311:68:49;;;3081:21:63;3138:2;3118:18;;;3111:30;3177:34;3157:18;;;3150:62;-1:-1:-1;;;3228:18:63;;;3221:32;3270:19;;10311:68:49;2897:398:63;10311:68:49;-1:-1:-1;;;;;10390:18:49;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;5788:25:63;;;10441:32:49;;5761:18:63;10441:32:49;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:49;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:49;;3502:2:63;11010:68:49;;;3484:21:63;3541:2;3521:18;;;3514:30;3580:31;3560:18;;;3553:59;3629:18;;11010:68:49;3300:353:63;11010:68:49;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:49;;7593:68;;;;-1:-1:-1;;;7593:68:49;;4267:2:63;7593:68:49;;;4249:21:63;4306:2;4286:18;;;4279:30;4345:34;4325:18;;;4318:62;-1:-1:-1;;;4396:18:63;;;4389:35;4441:19;;7593:68:49;4065:401:63;7593:68:49;-1:-1:-1;;;;;7679:16:49;;7671:64;;;;-1:-1:-1;;;7671:64:49;;2695:2:63;7671:64:49;;;2677:21:63;2734:2;2714:18;;;2707:30;2773:34;2753:18;;;2746:62;-1:-1:-1;;;2824:18:63;;;2817:33;2867:19;;7671:64:49;2493:399:63;7671:64:49;-1:-1:-1;;;;;7817:15:49;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:49;;3860:2:63;7842:72:49;;;3842:21:63;3899:2;3879:18;;;3872:30;3938:34;3918:18;;;3911:62;-1:-1:-1;;;3989:18:63;;;3982:36;4035:19;;7842:72:49;3658:402:63;7842:72:49;-1:-1:-1;;;;;7948:15:49;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:49;8054:4;-1:-1:-1;;;;;8045:26:49;;8064:6;8045:26;;;;5788:25:63;;5776:2;5761:18;;5642:177;8045:26:49;;;;;;;;8082:37;11786:121;8402:389;-1:-1:-1;;;;;8485:21:49;;8477:65;;;;-1:-1:-1;;;8477:65:49;;5484:2:63;8477:65:49;;;5466:21:63;5523:2;5503:18;;;5496:30;5562:33;5542:18;;;5535:61;5613:18;;8477:65:49;5282:355:63;8477:65:49;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8645:18:49;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:49;;5788:25:63;;;-1:-1:-1;;;;;8688:37:49;;;8705:1;;8688:37;;5776:2:63;5761:18;8688:37:49;;;;;;;8402:389;;:::o;14:173:63:-;82:20;;-1:-1:-1;;;;;131:31:63;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:63:o;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;981:254:63:o;1240:180::-;1299:6;1352:2;1340:9;1331:7;1327:23;1323:32;1320:52;;;1368:1;1365;1358:12;1320:52;-1:-1:-1;1391:23:63;;1240:180;-1:-1:-1;1240:180:63:o;1425:269::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;1590:9;1577:23;1640:4;1633:5;1629:16;1622:5;1619:27;1609:55;;1660:1;1657;1650:12;1891:597;2003:4;2032:2;2061;2050:9;2043:21;2093:6;2087:13;2136:6;2131:2;2120:9;2116:18;2109:34;2161:1;2171:140;2185:6;2182:1;2179:13;2171:140;;;2280:14;;;2276:23;;2270:30;2246:17;;;2265:2;2242:26;2235:66;2200:10;;2171:140;;;2329:6;2326:1;2323:13;2320:91;;;2399:1;2394:2;2385:6;2374:9;2370:22;2366:31;2359:42;2320:91;-1:-1:-1;2472:2:63;2451:15;-1:-1:-1;;2447:29:63;2432:45;;;;2479:2;2428:54;;1891:597;-1:-1:-1;;;1891:597:63:o;6013:225::-;6053:3;6084:1;6080:6;6077:1;6074:13;6071:136;;;6129:10;6124:3;6120:20;6117:1;6110:31;6164:4;6161:1;6154:15;6192:4;6189:1;6182:15;6071:136;-1:-1:-1;6223:9:63;;6013:225::o;6243:380::-;6322:1;6318:12;;;;6365;;;6386:61;;6440:4;6432:6;6428:17;6418:27;;6386:61;6493:2;6485:6;6482:14;6462:18;6459:38;6456:161;;;6539:10;6534:3;6530:20;6527:1;6520:31;6574:4;6571:1;6564:15;6602:4;6599:1;6592:15;6456:161;;6243:380;;;:::o",
    "source": "pragma solidity ^0.8.0;\n\n// SPDX-License-Identifier:MIT\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract TestDecimalsToken is ERC20 {\n\n    constructor() ERC20(\"Test Token\", \"DEC\") {\n        mint(100 ether);\n    }\n\n    function mint(uint amount) public {\n        _mint(msg.sender, amount);\n    }\n\n    uint8 private _decimals;\n\n    function decimals() public view virtual override returns (uint8) {\n        return _decimals;\n    }\n\n    function setDecimals(uint8 _dec) public {\n        _decimals = _dec;\n    }\n}",
    "sourcePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestDecimalsToken.sol",
    "ast": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestDecimalsToken.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "ERC20": [
                10771
            ],
            "IERC20": [
                10849
            ],
            "IERC20Metadata": [
                10874
            ],
            "TestDecimalsToken": [
                6431
            ]
        },
        "id": 6432,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 6382,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:21"
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 6383,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 6432,
                "sourceUnit": 10772,
                "src": "57:55:21",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 6384,
                            "name": "ERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10771,
                            "src": "144:5:21"
                        },
                        "id": 6385,
                        "nodeType": "InheritanceSpecifier",
                        "src": "144:5:21"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 6431,
                "linearizedBaseContracts": [
                    6431,
                    10771,
                    10874,
                    10849,
                    11508
                ],
                "name": "TestDecimalsToken",
                "nameLocation": "123:17:21",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 6396,
                            "nodeType": "Block",
                            "src": "198:32:21",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "313030",
                                                "id": 6393,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "213:9:21",
                                                "subdenomination": "ether",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                    "typeString": "int_const 100000000000000000000"
                                                },
                                                "value": "100"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                    "typeString": "int_const 100000000000000000000"
                                                }
                                            ],
                                            "id": 6392,
                                            "name": "mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6409,
                                            "src": "208:4:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 6394,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "208:15:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6395,
                                    "nodeType": "ExpressionStatement",
                                    "src": "208:15:21"
                                }
                            ]
                        },
                        "id": 6397,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "hexValue": "5465737420546f6b656e",
                                        "id": 6388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "177:12:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2",
                                            "typeString": "literal_string \"Test Token\""
                                        },
                                        "value": "Test Token"
                                    },
                                    {
                                        "hexValue": "444543",
                                        "id": 6389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "191:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c8117e3bb0a5365f1188f80e2df06c2b6996766cd83da2c646f5f9e14dcfbd17",
                                            "typeString": "literal_string \"DEC\""
                                        },
                                        "value": "DEC"
                                    }
                                ],
                                "id": 6390,
                                "kind": "baseConstructorSpecifier",
                                "modifierName": {
                                    "id": 6387,
                                    "name": "ERC20",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10771,
                                    "src": "171:5:21"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "171:26:21"
                            }
                        ],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6386,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "168:2:21"
                        },
                        "returnParameters": {
                            "id": 6391,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "198:0:21"
                        },
                        "scope": 6431,
                        "src": "157:73:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 6408,
                            "nodeType": "Block",
                            "src": "270:42:21",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 6403,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "286:3:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 6404,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "286:10:21",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 6405,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6399,
                                                "src": "298:6:21",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 6402,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10588,
                                            "src": "280:5:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 6406,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "280:25:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6407,
                                    "nodeType": "ExpressionStatement",
                                    "src": "280:25:21"
                                }
                            ]
                        },
                        "functionSelector": "a0712d68",
                        "id": 6409,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mint",
                        "nameLocation": "245:4:21",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6400,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6399,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "255:6:21",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6409,
                                    "src": "250:11:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6398,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "250:4:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "249:13:21"
                        },
                        "returnParameters": {
                            "id": 6401,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "270:0:21"
                        },
                        "scope": 6431,
                        "src": "236:76:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 6411,
                        "mutability": "mutable",
                        "name": "_decimals",
                        "nameLocation": "332:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6431,
                        "src": "318:23:21",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                        },
                        "typeName": {
                            "id": 6410,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "318:5:21",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            10260
                        ],
                        "body": {
                            "id": 6419,
                            "nodeType": "Block",
                            "src": "413:33:21",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 6417,
                                        "name": "_decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6411,
                                        "src": "430:9:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "functionReturnParameters": 6416,
                                    "id": 6418,
                                    "nodeType": "Return",
                                    "src": "423:16:21"
                                }
                            ]
                        },
                        "functionSelector": "313ce567",
                        "id": 6420,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decimals",
                        "nameLocation": "357:8:21",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 6413,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "388:8:21"
                        },
                        "parameters": {
                            "id": 6412,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "365:2:21"
                        },
                        "returnParameters": {
                            "id": 6416,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6415,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6420,
                                    "src": "406:5:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 6414,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "406:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "405:7:21"
                        },
                        "scope": 6431,
                        "src": "348:98:21",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 6429,
                            "nodeType": "Block",
                            "src": "492:33:21",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 6427,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 6425,
                                            "name": "_decimals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6411,
                                            "src": "502:9:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 6426,
                                            "name": "_dec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6422,
                                            "src": "514:4:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "src": "502:16:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "id": 6428,
                                    "nodeType": "ExpressionStatement",
                                    "src": "502:16:21"
                                }
                            ]
                        },
                        "functionSelector": "7a1395aa",
                        "id": 6430,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setDecimals",
                        "nameLocation": "461:11:21",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6423,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6422,
                                    "mutability": "mutable",
                                    "name": "_dec",
                                    "nameLocation": "479:4:21",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6430,
                                    "src": "473:10:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 6421,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "473:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "472:12:21"
                        },
                        "returnParameters": {
                            "id": 6424,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "492:0:21"
                        },
                        "scope": 6431,
                        "src": "452:73:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 6432,
                "src": "114:413:21",
                "usedErrors": []
            }
        ],
        "src": "0:527:21"
    },
    "legacyAST": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/test/TestDecimalsToken.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "ERC20": [
                10771
            ],
            "IERC20": [
                10849
            ],
            "IERC20Metadata": [
                10874
            ],
            "TestDecimalsToken": [
                6431
            ]
        },
        "id": 6432,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 6382,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:21"
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 6383,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 6432,
                "sourceUnit": 10772,
                "src": "57:55:21",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 6384,
                            "name": "ERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10771,
                            "src": "144:5:21"
                        },
                        "id": 6385,
                        "nodeType": "InheritanceSpecifier",
                        "src": "144:5:21"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 6431,
                "linearizedBaseContracts": [
                    6431,
                    10771,
                    10874,
                    10849,
                    11508
                ],
                "name": "TestDecimalsToken",
                "nameLocation": "123:17:21",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 6396,
                            "nodeType": "Block",
                            "src": "198:32:21",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "313030",
                                                "id": 6393,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "213:9:21",
                                                "subdenomination": "ether",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                    "typeString": "int_const 100000000000000000000"
                                                },
                                                "value": "100"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                    "typeString": "int_const 100000000000000000000"
                                                }
                                            ],
                                            "id": 6392,
                                            "name": "mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6409,
                                            "src": "208:4:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 6394,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "208:15:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6395,
                                    "nodeType": "ExpressionStatement",
                                    "src": "208:15:21"
                                }
                            ]
                        },
                        "id": 6397,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "hexValue": "5465737420546f6b656e",
                                        "id": 6388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "177:12:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2",
                                            "typeString": "literal_string \"Test Token\""
                                        },
                                        "value": "Test Token"
                                    },
                                    {
                                        "hexValue": "444543",
                                        "id": 6389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "191:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c8117e3bb0a5365f1188f80e2df06c2b6996766cd83da2c646f5f9e14dcfbd17",
                                            "typeString": "literal_string \"DEC\""
                                        },
                                        "value": "DEC"
                                    }
                                ],
                                "id": 6390,
                                "kind": "baseConstructorSpecifier",
                                "modifierName": {
                                    "id": 6387,
                                    "name": "ERC20",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10771,
                                    "src": "171:5:21"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "171:26:21"
                            }
                        ],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6386,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "168:2:21"
                        },
                        "returnParameters": {
                            "id": 6391,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "198:0:21"
                        },
                        "scope": 6431,
                        "src": "157:73:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 6408,
                            "nodeType": "Block",
                            "src": "270:42:21",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 6403,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "286:3:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 6404,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "286:10:21",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 6405,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6399,
                                                "src": "298:6:21",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 6402,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10588,
                                            "src": "280:5:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 6406,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "280:25:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6407,
                                    "nodeType": "ExpressionStatement",
                                    "src": "280:25:21"
                                }
                            ]
                        },
                        "functionSelector": "a0712d68",
                        "id": 6409,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mint",
                        "nameLocation": "245:4:21",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6400,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6399,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "255:6:21",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6409,
                                    "src": "250:11:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6398,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "250:4:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "249:13:21"
                        },
                        "returnParameters": {
                            "id": 6401,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "270:0:21"
                        },
                        "scope": 6431,
                        "src": "236:76:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 6411,
                        "mutability": "mutable",
                        "name": "_decimals",
                        "nameLocation": "332:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6431,
                        "src": "318:23:21",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                        },
                        "typeName": {
                            "id": 6410,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "318:5:21",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            10260
                        ],
                        "body": {
                            "id": 6419,
                            "nodeType": "Block",
                            "src": "413:33:21",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 6417,
                                        "name": "_decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6411,
                                        "src": "430:9:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "functionReturnParameters": 6416,
                                    "id": 6418,
                                    "nodeType": "Return",
                                    "src": "423:16:21"
                                }
                            ]
                        },
                        "functionSelector": "313ce567",
                        "id": 6420,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decimals",
                        "nameLocation": "357:8:21",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 6413,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "388:8:21"
                        },
                        "parameters": {
                            "id": 6412,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "365:2:21"
                        },
                        "returnParameters": {
                            "id": 6416,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6415,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6420,
                                    "src": "406:5:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 6414,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "406:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "405:7:21"
                        },
                        "scope": 6431,
                        "src": "348:98:21",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 6429,
                            "nodeType": "Block",
                            "src": "492:33:21",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 6427,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 6425,
                                            "name": "_decimals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6411,
                                            "src": "502:9:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 6426,
                                            "name": "_dec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6422,
                                            "src": "514:4:21",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "src": "502:16:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "id": 6428,
                                    "nodeType": "ExpressionStatement",
                                    "src": "502:16:21"
                                }
                            ]
                        },
                        "functionSelector": "7a1395aa",
                        "id": 6430,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setDecimals",
                        "nameLocation": "461:11:21",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6423,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6422,
                                    "mutability": "mutable",
                                    "name": "_dec",
                                    "nameLocation": "479:4:21",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6430,
                                    "src": "473:10:21",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 6421,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "473:5:21",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "472:12:21"
                        },
                        "returnParameters": {
                            "id": 6424,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "492:0:21"
                        },
                        "scope": 6431,
                        "src": "452:73:21",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 6432,
                "src": "114:413:21",
                "usedErrors": []
            }
        ],
        "src": "0:527:21"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.215Z",
    "devdoc": {
        "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
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
