{ "contractName": "DODOLpToken", "abi": [ { "inputs": [ { "internalType": "address", "name": "_originToken", "type": "address" } ], "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferPrepared", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_NEW_OWNER_", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_OWNER_", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "originToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "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": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "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": "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": "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": "user", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.9+commit.3e3065ac\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_originToken\",\"type\":\"address\"}],\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferPrepared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_NEW_OWNER_\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_OWNER_\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"originToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DODO Breeder\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"returns\":{\"_0\":\"A uint256 specifying the amount of tokens still available for the spender.\"}},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\",\"params\":{\"amount\":\"The amount of tokens to be spent.\",\"spender\":\"The address which will spend the funds.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the the balance of.\"},\"returns\":{\"balance\":\"An uint256 representing the amount owned by the passed address.\"}},\"transfer(address,uint256)\":{\"details\":\"transfer token for a specified address\",\"params\":{\"amount\":\"The amount to be transferred.\",\"to\":\"The address to transfer to.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another\",\"params\":{\"amount\":\"uint256 the amount of tokens to be transferred\",\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\"}}},\"title\":\"DODOLpToken\"},\"userdoc\":{\"methods\":{},\"notice\":\"Tokenize liquidity pool assets. An ordinary ERC20 contract with mint and burn functions\"}},\"settings\":{\"compilationTarget\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/impl/DODOLpToken.sol\":\"DODOLpToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/impl/DODOLpToken.sol\":{\"keccak256\":\"0x93bb74398b96b44febba31ad63435edae743142088311a325215aaa34d35b512\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0991fee8f385b3266ff39672b209906557d1be7308b5a35749f3f8453f427d2b\",\"dweb:/ipfs/Qmf8sKLSQkcniYin94QfNGc8GLMaVrLzQUq2grV5Hu7JyU\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol\":{\"keccak256\":\"0x40355eddd56b5a9ac760c5a056e135946b372b724fb632415792ad82c60a9ac5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e932da3bb19bdd0a7b17715099bc419f087cbf06809885fd98a7a35574387e\",\"dweb:/ipfs/Qmdv97dz4214Xrbb8xGbuYPJtvmqAoUcXuSCFgA8NzBUsg\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/Ownable.sol\":{\"keccak256\":\"0xb7a2ca6570834e4784e86d19fd5a4b6b1eff22a4586dc240659943396a365aa5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5855a493c78e787d7effd87d9c661acbcd19ca1e1ba72dbeaa91c3c8db29cbb4\",\"dweb:/ipfs/QmSddEexZ5okMatgoQ5JZRoJqe7BwsJwwWA2o1kKx7vbTH\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol\":{\"keccak256\":\"0x57d750628881687f826b54f60cbfd46c1a172433eed892bbb123f91869886af1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b40bd7946010ddae9679f36630510217dcaa9cb8643824f9edc8ef52bda95717\",\"dweb:/ipfs/QmZSjpfUGyrmokZyaMc74a8h6zy2qFVECPVP8VfTvzNEFb\"]}},\"version\":1}", "bytecode": "0x60c060405260036080819052620444c560ec1b60a0908152620000269160029190620000c6565b503480156200003457600080fd5b506040516200102d3803806200102d83398101604081905262000057916200016b565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600380546001600160a01b0319166001600160a01b03929092169190911790556200019b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200010957805160ff191683800117855562000139565b8280016001018555821562000139579182015b82811115620001395782518255916020019190600101906200011c565b50620001479291506200014b565b5090565b6200016891905b8082111562000147576000815560010162000152565b90565b6000602082840312156200017d578081fd5b81516001600160a01b038116811462000194578182fd5b9392505050565b610e8280620001ab6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634e71e0c8116100975780639dc29fac116100665780639dc29fac146101dd578063a9059cbb146101f0578063dd62ed3e14610203578063f2fde38b1461021657610100565b80634e71e0c8146101b257806370a08231146101ba5780638456db15146101cd57806395d89b41146101d557610100565b806318160ddd116100d357806318160ddd1461016057806323b872dd14610175578063313ce5671461018857806340c10f191461019d57610100565b806306fdde0314610105578063095ea7b31461012357806313096a411461014357806316048bc414610158575b600080fd5b61010d610229565b60405161011a9190610c89565b60405180910390f35b610136610131366004610b56565b6102f6565b60405161011a9190610c7e565b61014b610361565b60405161011a9190610c6a565b61014b610370565b61016861037f565b60405161011a9190610dcd565b610136610183366004610b16565b610385565b610190610509565b60405161011a9190610dd6565b6101b06101ab366004610b56565b61058b565b005b6101b061068e565b6101686101c8366004610ac7565b61071c565b61014b610737565b61010d610746565b6101b06101eb366004610b56565b6107d1565b6101366101fe366004610b56565b6108c8565b610168610211366004610ae2565b610986565b6101b0610224366004610ac7565b6109b1565b604080518082018252600f81526e5f444f444f5f4c505f544f4b454e5f60881b602082015260035482516306fdde0360e01b815292516060936001600160a01b03909216916306fdde03916004808301926000929190829003018186803b15801561029357600080fd5b505afa1580156102a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102cf9190810190610b80565b816040516020016102e1929190610c3c565b60405160208183030381529060405291505090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061034f908690610dcd565b60405180910390a35060015b92915050565b6003546001600160a01b031681565b6000546001600160a01b031681565b60045481565b6001600160a01b0383166000908152600560205260408120548211156103c65760405162461bcd60e51b81526004016103bd90610d5b565b60405180910390fd5b6001600160a01b03841660009081526006602090815260408083203384529091529020548211156104095760405162461bcd60e51b81526004016103bd90610ce3565b6001600160a01b038416600090815260056020526040902054610432908363ffffffff610a5c16565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610467908363ffffffff610a8416565b6001600160a01b0380851660009081526005602090815260408083209490945591871681526006825282812033825290915220546104ab908363ffffffff610a5c16565b6001600160a01b038086166000818152600660209081526040808320338452909152908190209390935591519085169190600080516020610e2d833981519152906104f7908690610dcd565b60405180910390a35060019392505050565b6003546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561054e57600080fd5b505afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105869190610c1b565b905090565b6000546001600160a01b031633146105b55760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b0382166000908152600560205260409020546105de908263ffffffff610a8416565b6001600160a01b03831660009081526005602052604090205560045461060a908263ffffffff610a8416565b6004556040516001600160a01b038316907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590610648908490610dcd565b60405180910390a2816001600160a01b031660006001600160a01b0316600080516020610e2d833981519152836040516106829190610dcd565b60405180910390a35050565b6001546001600160a01b031633146106b85760405162461bcd60e51b81526004016103bd90610cbc565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b031660009081526005602052604090205490565b6001546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b505050505081565b6000546001600160a01b031633146107fb5760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b038216600090815260056020526040902054610824908263ffffffff610a5c16565b6001600160a01b038316600090815260056020526040902055600454610850908263ffffffff610a5c16565b6004556040516001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59061088e908490610dcd565b60405180910390a260006001600160a01b0316826001600160a01b0316600080516020610e2d833981519152836040516106829190610dcd565b336000908152600560205260408120548211156108f75760405162461bcd60e51b81526004016103bd90610d5b565b33600090815260056020526040902054610917908363ffffffff610a5c16565b33600090815260056020526040808220929092556001600160a01b03851681522054610949908363ffffffff610a8416565b6001600160a01b038416600081815260056020526040908190209290925590513390600080516020610e2d8339815191529061034f908690610dcd565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000546001600160a01b031633146109db5760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b038116610a015760405162461bcd60e51b81526004016103bd90610d34565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115610a7e5760405162461bcd60e51b81526004016103bd90610d11565b50900390565b600082820183811015610aa95760405162461bcd60e51b81526004016103bd90610daa565b9392505050565b80356001600160a01b038116811461035b57600080fd5b600060208284031215610ad8578081fd5b610aa98383610ab0565b60008060408385031215610af4578081fd5b610afe8484610ab0565b9150610b0d8460208501610ab0565b90509250929050565b600080600060608486031215610b2a578081fd5b8335610b3581610e14565b92506020840135610b4581610e14565b929592945050506040919091013590565b60008060408385031215610b68578182fd5b610b728484610ab0565b946020939093013593505050565b600060208284031215610b91578081fd5b815167ffffffffffffffff80821115610ba8578283fd5b81840185601f820112610bb9578384fd5b8051925081831115610bc9578384fd5b604051601f8401601f191681016020018381118282101715610be9578586fd5b604052838152818401602001871015610c00578485fd5b610c11846020830160208501610de4565b9695505050505050565b600060208284031215610c2c578081fd5b815160ff81168114610aa9578182fd5b60008351610c4e818460208801610de4565b8351908301610c61828260208801610de4565b01949350505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602082528251806020840152610ca8816040850160208701610de4565b601f01601f19169190910160400192915050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526014908201527308298989eae829c868abe9c9ea8be8a9c9eaa8e960631b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b6020808252601290820152710848298829c868abe9c9ea8be8a9c9eaa8e960731b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b90815260200190565b60ff91909116815260200190565b60005b83811015610dff578181015183820152602001610de7565b83811115610e0e576000848401525b50505050565b6001600160a01b0381168114610e2957600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cf0d1d887af2d1880badc337ef0f270c8675b4bfd794dc60bdaa78dec3bd19664736f6c63430006090033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80634e71e0c8116100975780639dc29fac116100665780639dc29fac146101dd578063a9059cbb146101f0578063dd62ed3e14610203578063f2fde38b1461021657610100565b80634e71e0c8146101b257806370a08231146101ba5780638456db15146101cd57806395d89b41146101d557610100565b806318160ddd116100d357806318160ddd1461016057806323b872dd14610175578063313ce5671461018857806340c10f191461019d57610100565b806306fdde0314610105578063095ea7b31461012357806313096a411461014357806316048bc414610158575b600080fd5b61010d610229565b60405161011a9190610c89565b60405180910390f35b610136610131366004610b56565b6102f6565b60405161011a9190610c7e565b61014b610361565b60405161011a9190610c6a565b61014b610370565b61016861037f565b60405161011a9190610dcd565b610136610183366004610b16565b610385565b610190610509565b60405161011a9190610dd6565b6101b06101ab366004610b56565b61058b565b005b6101b061068e565b6101686101c8366004610ac7565b61071c565b61014b610737565b61010d610746565b6101b06101eb366004610b56565b6107d1565b6101366101fe366004610b56565b6108c8565b610168610211366004610ae2565b610986565b6101b0610224366004610ac7565b6109b1565b604080518082018252600f81526e5f444f444f5f4c505f544f4b454e5f60881b602082015260035482516306fdde0360e01b815292516060936001600160a01b03909216916306fdde03916004808301926000929190829003018186803b15801561029357600080fd5b505afa1580156102a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102cf9190810190610b80565b816040516020016102e1929190610c3c565b60405160208183030381529060405291505090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061034f908690610dcd565b60405180910390a35060015b92915050565b6003546001600160a01b031681565b6000546001600160a01b031681565b60045481565b6001600160a01b0383166000908152600560205260408120548211156103c65760405162461bcd60e51b81526004016103bd90610d5b565b60405180910390fd5b6001600160a01b03841660009081526006602090815260408083203384529091529020548211156104095760405162461bcd60e51b81526004016103bd90610ce3565b6001600160a01b038416600090815260056020526040902054610432908363ffffffff610a5c16565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610467908363ffffffff610a8416565b6001600160a01b0380851660009081526005602090815260408083209490945591871681526006825282812033825290915220546104ab908363ffffffff610a5c16565b6001600160a01b038086166000818152600660209081526040808320338452909152908190209390935591519085169190600080516020610e2d833981519152906104f7908690610dcd565b60405180910390a35060019392505050565b6003546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561054e57600080fd5b505afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105869190610c1b565b905090565b6000546001600160a01b031633146105b55760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b0382166000908152600560205260409020546105de908263ffffffff610a8416565b6001600160a01b03831660009081526005602052604090205560045461060a908263ffffffff610a8416565b6004556040516001600160a01b038316907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590610648908490610dcd565b60405180910390a2816001600160a01b031660006001600160a01b0316600080516020610e2d833981519152836040516106829190610dcd565b60405180910390a35050565b6001546001600160a01b031633146106b85760405162461bcd60e51b81526004016103bd90610cbc565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b031660009081526005602052604090205490565b6001546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b505050505081565b6000546001600160a01b031633146107fb5760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b038216600090815260056020526040902054610824908263ffffffff610a5c16565b6001600160a01b038316600090815260056020526040902055600454610850908263ffffffff610a5c16565b6004556040516001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59061088e908490610dcd565b60405180910390a260006001600160a01b0316826001600160a01b0316600080516020610e2d833981519152836040516106829190610dcd565b336000908152600560205260408120548211156108f75760405162461bcd60e51b81526004016103bd90610d5b565b33600090815260056020526040902054610917908363ffffffff610a5c16565b33600090815260056020526040808220929092556001600160a01b03851681522054610949908363ffffffff610a8416565b6001600160a01b038416600081815260056020526040908190209290925590513390600080516020610e2d8339815191529061034f908690610dcd565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000546001600160a01b031633146109db5760405162461bcd60e51b81526004016103bd90610d87565b6001600160a01b038116610a015760405162461bcd60e51b81526004016103bd90610d34565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115610a7e5760405162461bcd60e51b81526004016103bd90610d11565b50900390565b600082820183811015610aa95760405162461bcd60e51b81526004016103bd90610daa565b9392505050565b80356001600160a01b038116811461035b57600080fd5b600060208284031215610ad8578081fd5b610aa98383610ab0565b60008060408385031215610af4578081fd5b610afe8484610ab0565b9150610b0d8460208501610ab0565b90509250929050565b600080600060608486031215610b2a578081fd5b8335610b3581610e14565b92506020840135610b4581610e14565b929592945050506040919091013590565b60008060408385031215610b68578182fd5b610b728484610ab0565b946020939093013593505050565b600060208284031215610b91578081fd5b815167ffffffffffffffff80821115610ba8578283fd5b81840185601f820112610bb9578384fd5b8051925081831115610bc9578384fd5b604051601f8401601f191681016020018381118282101715610be9578586fd5b604052838152818401602001871015610c00578485fd5b610c11846020830160208501610de4565b9695505050505050565b600060208284031215610c2c578081fd5b815160ff81168114610aa9578182fd5b60008351610c4e818460208801610de4565b8351908301610c61828260208801610de4565b01949350505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602082528251806020840152610ca8816040850160208701610de4565b601f01601f19169190910160400192915050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526014908201527308298989eae829c868abe9c9ea8be8a9c9eaa8e960631b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b6020808252601290820152710848298829c868abe9c9ea8be8a9c9eaa8e960731b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b90815260200190565b60ff91909116815260200190565b60005b83811015610dff578181015183820152602001610de7565b83811115610e0e576000848401525b50505050565b6001600160a01b0381168114610e2957600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cf0d1d887af2d1880badc337ef0f270c8675b4bfd794dc60bdaa78dec3bd19664736f6c63430006090033", "immutableReferences": {}, "sourceMap": "497:28:23:-:0;426:4085;497:28;;426:4085;497:28;;;-1:-1:-1;;;497:28:23;;;;;;;;;;:::i;:::-;;1075:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:7:38;:20;;-1:-1:-1;;;;;;757:20:38;767:10;757:20;;;;792:41;;-1:-1:-1;;;;;825:7:38;;;;757;792:41;;757:7;;792:41;1126:11:23;:26;;-1:-1:-1;;;;;;1126:26:23;-1:-1:-1;;;;;1126:26:23;;;;;;;;;;426:4085;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;426:4085:23;;;-1:-1:-1;426:4085:23;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;146:263:-1:-;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;576:54;;701:35;;691:2;;-1:-1;;740:12;691:2;319:74;223:186;-1:-1;;;223:186;;426:4085:23;;;;;;", "deployedSourceMap": "426:4085:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:200;;;:::i;:::-;;;;;;;;;;;;;;;;3345:199;;;;;;;;;:::i;:::-;;;;;;;;531:26;;;:::i;:::-;;;;;;;;251:22:38;;;:::i;564:26:23:-;;;:::i;:::-;;;;;;;;2596:506;;;;;;;;;:::i;1371:102::-;;;:::i;:::-;;;;;;;;4009:247;;;;;;;;;:::i;:::-;;1072:225:38;;;:::i;2196:113:23:-;;;;;;;;;:::i;279:26:38:-;;;:::i;497:28:23:-;;;:::i;4262:247::-;;;;;;;;;:::i;1642:329::-;;;;;;;;;:::i;3875:128::-;;;;;;;;;:::i;846:220:38:-;;;;;;;;;:::i;1165:200:23:-;1227:47;;;;;;;;;;;-1:-1:-1;;;1227:47:23;;;;1322:11;;1315:26;;-1:-1:-1;;;1315:26:23;;;;1202:13;;-1:-1:-1;;;;;1322:11:23;;;;-1:-1:-1;;1315:26:23;;;;;-1:-1:-1;;1315:26:23;;;;;;;1322:11;1315:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1315:26:23;;;;;;;;;;;;;;1343:13;1298:59;;;;;;;;;;;;;;;;;;;;;;;1284:74;;;1165:200;:::o;3345:199::-;3435:10;3411:4;3427:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3427:28:23;;;;;;;;;;:37;;;3479;3411:4;;3427:28;;3479:37;;;;3427;;3479;;;;;;;;;;-1:-1:-1;3533:4:23;3345:199;;;;;:::o;531:26::-;;;-1:-1:-1;;;;;531:26:23;;:::o;251:22:38:-;;;-1:-1:-1;;;;;251:22:38;;:::o;564:26:23:-;;;;:::o;2596:506::-;-1:-1:-1;;;;;2740:14:23;;2706:4;2740:14;;;:8;:14;;;;;;2730:24;;;2722:55;;;;-1:-1:-1;;;2722:55:23;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2805:13:23;;;;;;:7;:13;;;;;;;;2819:10;2805:25;;;;;;;;2795:35;;;2787:68;;;;-1:-1:-1;;;2787:68:23;;;;;;;;;-1:-1:-1;;;;;2883:14:23;;;;;;:8;:14;;;;;;:26;;2902:6;2883:18;:26::i;:::-;-1:-1:-1;;;;;2866:14:23;;;;;;;:8;:14;;;;;;:43;;;;2934:12;;;;;;;:24;;2951:6;2934:16;:24::i;:::-;-1:-1:-1;;;;;2919:12:23;;;;;;;:8;:12;;;;;;;;:39;;;;2996:13;;;;;:7;:13;;;;;3010:10;2996:25;;;;;;;:37;;3026:6;2996:29;:37::i;:::-;-1:-1:-1;;;;;2968:13:23;;;;;;;:7;:13;;;;;;;;2982:10;2968:25;;;;;;;;;:65;;;;3048:26;;;;;2968:13;;3048:26;2982:10;-1:-1:-1;2968:13:23;-1:-1:-1;;;;;3048:26:23;;;3067:6;;3048:26;;;;;;;;;;-1:-1:-1;3091:4:23;2596:506;;;;;:::o;1371:102::-;1443:11;;1436:30;;;-1:-1:-1;;;1436:30:23;;;;1412:5;;-1:-1:-1;;;;;1443:11:23;;-1:-1:-1;;1436:30:23;;;;;;;;;;;;;;1443:11;1436:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1429:37;;1371:102;:::o;4009:247::-;635:7:38;;-1:-1:-1;;;;;635:7:38;621:10;:21;613:43;;;;-1:-1:-1;;;613:43:38;;;;;;;;;-1:-1:-1;;;;;4098:14:23;::::1;;::::0;;;:8:::1;:14;::::0;;;;;:25:::1;::::0;4117:5;4098:18:::1;:25::i;:::-;-1:-1:-1::0;;;;;4081:14:23;::::1;;::::0;;;:8:::1;:14;::::0;;;;:42;4147:11:::1;::::0;:22:::1;::::0;4163:5;4147:15:::1;:22::i;:::-;4133:11;:36:::0;4184:17:::1;::::0;-1:-1:-1;;;;;4184:17:23;::::1;::::0;::::1;::::0;::::1;::::0;4195:5;;4184:17:::1;;;;;;;;;;4233:1;-1:-1:-1::0;;;;;;;4216:33:23;::::1;::::0;4233:1;;;-1:-1:-1;;4233:1:23;-1:-1:-1;;;;;4243:5:23::1;4216:33;;;;;;;;;;;;;;;4009:247:::0;;:::o;1072:225:38:-;1139:11;;-1:-1:-1;;;;;1139:11:38;1125:10;:25;1117:51;;;;-1:-1:-1;;;1117:51:38;;;;;;;;;1213:11;;;1204:7;;1183:42;;-1:-1:-1;;;;;1213:11:38;;;;1204:7;;;;1183:42;;;1245:11;;;;1235:21;;-1:-1:-1;;;;;1245:11:38;;-1:-1:-1;;;;;;1235:21:38;;;;;;;1266:24;;;1072:225::o;2196:113:23:-;-1:-1:-1;;;;;2287:15:23;2253;2287;;;:8;:15;;;;;;;2196:113::o;279:26:38:-;;;-1:-1:-1;;;;;279:26:38;;:::o;497:28:23:-;;;;;;;;;;;;;;-1:-1:-1;;497:28:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4262:247::-;635:7:38;;-1:-1:-1;;;;;635:7:38;621:10;:21;613:43;;;;-1:-1:-1;;;613:43:38;;;;;;;;;-1:-1:-1;;;;;4351:14:23;::::1;;::::0;;;:8:::1;:14;::::0;;;;;:25:::1;::::0;4370:5;4351:18:::1;:25::i;:::-;-1:-1:-1::0;;;;;4334:14:23;::::1;;::::0;;;:8:::1;:14;::::0;;;;:42;4400:11:::1;::::0;:22:::1;::::0;4416:5;4400:15:::1;:22::i;:::-;4386:11;:36:::0;4437:17:::1;::::0;-1:-1:-1;;;;;4437:17:23;::::1;::::0;::::1;::::0;::::1;::::0;4448:5;;4437:17:::1;;;;;;;;;;4492:1;-1:-1:-1::0;;;;;;;4469:33:23;::::1;::::0;4492:1;;-1:-1:-1;;4492:1:23;-1:-1:-1;;;;;4496:5:23::1;4469:33;;;;;;;1642:329:::0;1747:10;1704:4;1738:20;;;:8;:20;;;;;;1728:30;;;1720:61;;;;-1:-1:-1;;;1720:61:23;;;;;;;;;1824:10;1815:20;;;;:8;:20;;;;;;:32;;1840:6;1815:32;:24;:32;:::i;:::-;1801:10;1792:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;1872:12:23;;;;;;:24;;1889:6;1872:16;:24::i;:::-;-1:-1:-1;;;;;1857:12:23;;;;;;:8;:12;;;;;;;;:39;;;;1911:32;;1857:12;;1920:10;;1911:32;1857:12;;;-1:-1:-1;1857:12:23;-1:-1:-1;;;;;1911:32:23;;;1936:6;;1911:32;;3875:128;-1:-1:-1;;;;;3973:14:23;;;3947:7;3973:14;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;3875:128::o;846:220:38:-;635:7;;-1:-1:-1;;;;;635:7:38;621:10;:21;613:43;;;;-1:-1:-1;;;613:43:38;;;;;;;;;-1:-1:-1;;;;;928:22:38;::::1;920:48;;;::::0;-1:-1:-1;;;920:48:38;;::::1;::::0;::::1;;;;;1009:7;::::0;;983:44:::1;::::0;-1:-1:-1;;;;;983:44:38;;::::1;::::0;1009:7;::::1;::::0;983:44:::1;::::0;::::1;1037:11;:22:::0;;-1:-1:-1;;;;;;1037:22:38::1;-1:-1:-1::0;;;;;1037:22:38;;;::::1;::::0;;;::::1;::::0;;846:220::o;934:134:41:-;992:7;1024:1;1019;:6;;1011:28;;;;-1:-1:-1;;;1011:28:41;;;;;;;;;-1:-1:-1;1056:5:41;;;934:134::o;1074:157::-;1132:7;1163:5;;;1186:6;;;;1178:28;;;;-1:-1:-1;;;1178:28:41;;;;;;;;;1223:1;1074:157;-1:-1:-1;;;1074:157:41:o;5:130:-1:-;72:20;;-1:-1;;;;;12349:54;;13023:35;;13013:2;;13072:1;;13062:12;869:241;;973:2;961:9;952:7;948:23;944:32;941:2;;;-1:-1;;979:12;941:2;1041:53;1086:7;1062:22;1041:53;;1117:366;;;1238:2;1226:9;1217:7;1213:23;1209:32;1206:2;;;-1:-1;;1244:12;1206:2;1306:53;1351:7;1327:22;1306:53;;;1296:63;;1414:53;1459:7;1396:2;1439:9;1435:22;1414:53;;;1404:63;;1200:283;;;;;;1490:491;;;;1628:2;1616:9;1607:7;1603:23;1599:32;1596:2;;;-1:-1;;1634:12;1596:2;85:6;72:20;97:33;124:5;97:33;;;1686:63;-1:-1;1786:2;1825:22;;72:20;97:33;72:20;97:33;;;1590:391;;1794:63;;-1:-1;;;1894:2;1933:22;;;;662:20;;1590:391;1988:366;;;2109:2;2097:9;2088:7;2084:23;2080:32;2077:2;;;-1:-1;;2115:12;2077:2;2177:53;2222:7;2198:22;2177:53;;;2167:63;2267:2;2306:22;;;;662:20;;-1:-1;;;2071:283;2361:362;;2486:2;2474:9;2465:7;2461:23;2457:32;2454:2;;;-1:-1;;2492:12;2454:2;2543:17;2537:24;2581:18;;2573:6;2570:30;2567:2;;;-1:-1;;2603:12;2567:2;2690:6;2679:9;2675:22;256:3;249:4;241:6;237:17;233:27;223:2;;-1:-1;;264:12;223:2;304:6;298:13;284:27;;2581:18;11449:6;11446:30;11443:2;;;-1:-1;;11479:12;11443:2;11112;11106:9;2486:2;-1:-1;;11552:9;11533:17;;11529:33;11138:17;;;11234:22;;;11198:34;;;11195:62;11192:2;;;-1:-1;;11260:12;11192:2;11112;11279:22;397:21;;;497:16;;;2486:2;497:16;494:25;-1:-1;491:2;;;-1:-1;;522:12;491:2;542:39;574:6;2486:2;473:5;469:16;2486:2;439:6;435:17;542:39;;;2623:84;2448:275;-1:-1;;;;;;2448:275;2730:259;;2843:2;2831:9;2822:7;2818:23;2814:32;2811:2;;;-1:-1;;2849:12;2811:2;814:6;808:13;12565:4;13295:5;12554:16;13272:5;13269:33;13259:2;;-1:-1;;13306:12;6433:436;;3744:5;11730:12;3856:52;3901:6;3896:3;3889:4;3882:5;3878:16;3856:52;;;11730:12;;;3920:16;;3856:52;11730:12;3920:16;3889:4;3878:16;;3856:52;;;3920:16;;6617:252;-1:-1;;;;6617:252;6876:222;-1:-1;;;;;12349:54;;;;3067:37;;7003:2;6988:18;;6974:124;7105:210;12261:13;;12254:21;3181:34;;7226:2;7211:18;;7197:118;7322:310;;7469:2;7490:17;7483:47;3372:5;11730:12;11887:6;7469:2;7458:9;7454:18;11875:19;3466:52;3511:6;11915:14;7458:9;11915:14;7469:2;3492:5;3488:16;3466:52;;;11552:9;12927:14;-1:-1;;12923:28;3530:39;;;;11915:14;3530:39;;7440:192;-1:-1;;7440:192;7639:416;7839:2;7853:47;;;4173:2;7824:18;;;11875:19;-1:-1;;;11915:14;;;4189:36;4244:12;;;7810:245;8062:416;8262:2;8276:47;;;4495:2;8247:18;;;11875:19;-1:-1;;;11915:14;;;4511:43;4573:12;;;8233:245;8485:416;8685:2;8699:47;;;4824:1;8670:18;;;11875:19;-1:-1;;;11915:14;;;4839:32;4890:12;;;8656:245;8908:416;9108:2;9122:47;;;5141:2;9093:18;;;11875:19;-1:-1;;;11915:14;;;5157:36;5212:12;;;9079:245;9331:416;9531:2;9545:47;;;5463:2;9516:18;;;11875:19;-1:-1;;;11915:14;;;5479:41;5539:12;;;9502:245;9754:416;9954:2;9968:47;;;5790:1;9939:18;;;11875:19;-1:-1;;;11915:14;;;5805:32;5856:12;;;9925:245;10177:416;10377:2;10391:47;;;6107:1;10362:18;;;11875:19;-1:-1;;;11915:14;;;6122:32;6173:12;;;10348:245;10600:222;6270:37;;;10727:2;10712:18;;10698:124;10829:214;12565:4;12554:16;;;;6386:35;;10952:2;10937:18;;10923:120;12583:268;12648:1;12655:101;12669:6;12666:1;12663:13;12655:101;;;12736:11;;;12730:18;12717:11;;;12710:39;12691:2;12684:10;12655:101;;;12771:6;12768:1;12765:13;12762:2;;;12648:1;12827:6;12822:3;12818:16;12811:27;12762:2;;12632:219;;;;12964:117;-1:-1;;;;;12349:54;;13023:35;;13013:2;;13072:1;;13062:12;13013:2;13007:74;", "source": "/*\n\n Copyright 2020 DODO ZOO.\n SPDX-License-Identifier: Apache-2.0\n\n*/\n\npragma solidity 0.6.9;\npragma experimental ABIEncoderV2;\n\nimport {IERC20} from \"../intf/IERC20.sol\";\nimport {SafeMath} from \"../lib/SafeMath.sol\";\nimport {Ownable} from \"../lib/Ownable.sol\";\n\n/**\n * @title DODOLpToken\n * @author DODO Breeder\n *\n * @notice Tokenize liquidity pool assets. An ordinary ERC20 contract with mint and burn functions\n */\ncontract DODOLpToken is Ownable {\n using SafeMath for uint256;\n\n string public symbol = \"DLP\";\n address public originToken;\n\n uint256 public totalSupply;\n mapping(address => uint256) internal balances;\n mapping(address => mapping(address => uint256)) internal allowed;\n\n // ============ Events ============\n\n event Transfer(address indexed from, address indexed to, uint256 amount);\n\n event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n event Mint(address indexed user, uint256 value);\n\n event Burn(address indexed user, uint256 value);\n\n // ============ Functions ============\n\n constructor(address _originToken) public {\n originToken = _originToken;\n }\n\n function name() public view returns (string memory) {\n string memory lpTokenSuffix = \"_DODO_LP_TOKEN_\";\n return string(abi.encodePacked(IERC20(originToken).name(), lpTokenSuffix));\n }\n\n function decimals() public view returns (uint8) {\n return IERC20(originToken).decimals();\n }\n\n /**\n * @dev transfer token for a specified address\n * @param to The address to transfer to.\n * @param amount The amount to be transferred.\n */\n function transfer(address to, uint256 amount) public returns (bool) {\n require(amount <= balances[msg.sender], \"BALANCE_NOT_ENOUGH\");\n\n balances[msg.sender] = balances[msg.sender].sub(amount);\n balances[to] = balances[to].add(amount);\n emit Transfer(msg.sender, to, amount);\n return true;\n }\n\n /**\n * @dev Gets the balance of the specified address.\n * @param owner The address to query the the balance of.\n * @return balance An uint256 representing the amount owned by the passed address.\n */\n function balanceOf(address owner) external view returns (uint256 balance) {\n return balances[owner];\n }\n\n /**\n * @dev Transfer tokens from one address to another\n * @param from address The address which you want to send tokens from\n * @param to address The address which you want to transfer to\n * @param amount uint256 the amount of tokens to be transferred\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) public returns (bool) {\n require(amount <= balances[from], \"BALANCE_NOT_ENOUGH\");\n require(amount <= allowed[from][msg.sender], \"ALLOWANCE_NOT_ENOUGH\");\n\n balances[from] = balances[from].sub(amount);\n balances[to] = balances[to].add(amount);\n allowed[from][msg.sender] = allowed[from][msg.sender].sub(amount);\n emit Transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n * @param spender The address which will spend the funds.\n * @param amount The amount of tokens to be spent.\n */\n function approve(address spender, uint256 amount) public returns (bool) {\n allowed[msg.sender][spender] = amount;\n emit Approval(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev Function to check the amount of tokens that an owner allowed to a spender.\n * @param owner address The address which owns the funds.\n * @param spender address The address which will spend the funds.\n * @return A uint256 specifying the amount of tokens still available for the spender.\n */\n function allowance(address owner, address spender) public view returns (uint256) {\n return allowed[owner][spender];\n }\n\n function mint(address user, uint256 value) external onlyOwner {\n balances[user] = balances[user].add(value);\n totalSupply = totalSupply.add(value);\n emit Mint(user, value);\n emit Transfer(address(0), user, value);\n }\n\n function burn(address user, uint256 value) external onlyOwner {\n balances[user] = balances[user].sub(value);\n totalSupply = totalSupply.sub(value);\n emit Burn(user, value);\n emit Transfer(user, address(0), value);\n }\n}\n", "sourcePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/impl/DODOLpToken.sol", "ast": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/impl/DODOLpToken.sol", "exportedSymbols": { "DODOLpToken": [ 7347 ] }, "id": 7348, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 6965, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:23" }, { "id": 6966, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:23" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol", "file": "../intf/IERC20.sol", "id": 6968, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 10608, "src": "136:42:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6967, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "144:6:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol", "file": "../lib/SafeMath.sol", "id": 6970, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 11624, "src": "179:45:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6969, "name": "SafeMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "187:8:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/Ownable.sol", "file": "../lib/Ownable.sol", "id": 6972, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 11272, "src": "225:43:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6971, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "233:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 6974, "name": "Ownable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11271, "src": "450:7:23", "typeDescriptions": { "typeIdentifier": "t_contract$_Ownable_$11271", "typeString": "contract Ownable" } }, "id": 6975, "nodeType": "InheritanceSpecifier", "src": "450:7:23" } ], "contractDependencies": [ 11271 ], "contractKind": "contract", "documentation": { "id": 6973, "nodeType": "StructuredDocumentation", "src": "270:155:23", "text": " @title DODOLpToken\n @author DODO Breeder\n @notice Tokenize liquidity pool assets. An ordinary ERC20 contract with mint and burn functions" }, "fullyImplemented": true, "id": 7347, "linearizedBaseContracts": [ 7347, 11271 ], "name": "DODOLpToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 6978, "libraryName": { "contractScope": null, "id": 6976, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11623, "src": "470:8:23", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$11623", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "464:27:23", "typeName": { "id": 6977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "483:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "95d89b41", "id": 6981, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "497:28:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 6979, "name": "string", "nodeType": "ElementaryTypeName", "src": "497:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "444c50", "id": 6980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "520:5:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad4ac2ef6228a2adb212e98f01d891da2027029dcf86bc341ca6cc047d65e8a7", "typeString": "literal_string \"DLP\"" }, "value": "DLP" }, "visibility": "public" }, { "constant": false, "functionSelector": "13096a41", "id": 6983, "mutability": "mutable", "name": "originToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "531:26:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6982, "name": "address", "nodeType": "ElementaryTypeName", "src": "531:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "18160ddd", "id": 6985, "mutability": "mutable", "name": "totalSupply", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "564:26:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 6984, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "564:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 6989, "mutability": "mutable", "name": "balances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "596:45:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 6988, "keyType": { "id": 6986, "name": "address", "nodeType": "ElementaryTypeName", "src": "604:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "596:27:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "615:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 6995, "mutability": "mutable", "name": "allowed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "647:64:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 6994, "keyType": { "id": 6990, "name": "address", "nodeType": "ElementaryTypeName", "src": "655:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "647:47:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 6993, "keyType": { "id": 6991, "name": "address", "nodeType": "ElementaryTypeName", "src": "674:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "666:27:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "685:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "internal" }, { "anonymous": false, "documentation": null, "id": 7003, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { "id": 7002, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 6997, "indexed": true, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "774:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6996, "name": "address", "nodeType": "ElementaryTypeName", "src": "774:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 6999, "indexed": true, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "796:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6998, "name": "address", "nodeType": "ElementaryTypeName", "src": "796:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7001, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "816:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "816:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "773:58:23" }, "src": "759:73:23" }, { "anonymous": false, "documentation": null, "id": 7011, "name": "Approval", "nodeType": "EventDefinition", "parameters": { "id": 7010, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7005, "indexed": true, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "853:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7004, "name": "address", "nodeType": "ElementaryTypeName", "src": "853:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7007, "indexed": true, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "876:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7006, "name": "address", "nodeType": "ElementaryTypeName", "src": "876:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7009, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "901:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "901:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "852:64:23" }, "src": "838:79:23" }, { "anonymous": false, "documentation": null, "id": 7017, "name": "Mint", "nodeType": "EventDefinition", "parameters": { "id": 7016, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7013, "indexed": true, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7017, "src": "934:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7012, "name": "address", "nodeType": "ElementaryTypeName", "src": "934:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7015, "indexed": false, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7017, "src": "956:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "956:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "933:37:23" }, "src": "923:48:23" }, { "anonymous": false, "documentation": null, "id": 7023, "name": "Burn", "nodeType": "EventDefinition", "parameters": { "id": 7022, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7019, "indexed": true, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7023, "src": "988:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7018, "name": "address", "nodeType": "ElementaryTypeName", "src": "988:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7021, "indexed": false, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7023, "src": "1010:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1010:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "987:37:23" }, "src": "977:48:23" }, { "body": { "id": 7032, "nodeType": "Block", "src": "1116:43:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7028, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1126:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 7029, "name": "_originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "1140:12:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1126:26:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 7031, "nodeType": "ExpressionStatement", "src": "1126:26:23" } ] }, "documentation": null, "id": 7033, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7026, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7025, "mutability": "mutable", "name": "_originToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7033, "src": "1087:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7024, "name": "address", "nodeType": "ElementaryTypeName", "src": "1087:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1086:22:23" }, "returnParameters": { "id": 7027, "nodeType": "ParameterList", "parameters": [], "src": "1116:0:23" }, "scope": 7347, "src": "1075:84:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7055, "nodeType": "Block", "src": "1217:148:23", "statements": [ { "assignments": [ 7039 ], "declarations": [ { "constant": false, "id": 7039, "mutability": "mutable", "name": "lpTokenSuffix", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7055, "src": "1227:27:23", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 7038, "name": "string", "nodeType": "ElementaryTypeName", "src": "1227:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 7041, "initialValue": { "argumentTypes": null, "hexValue": "5f444f444f5f4c505f544f4b454e5f", "id": 7040, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1257:17:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fd33f461926c288e22976ed16405c386e401ae2dabde8aeb3b67fd7ee18035e7", "typeString": "literal_string \"_DODO_LP_TOKEN_\"" }, "value": "_DODO_LP_TOKEN_" }, "nodeType": "VariableDeclarationStatement", "src": "1227:47:23" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7047, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1322:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 7046, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "1315:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 7048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1315:19:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 7049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 10556, "src": "1315:24:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view external returns (string memory)" } }, "id": 7050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1315:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 7051, "name": "lpTokenSuffix", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7039, "src": "1343:13:23", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "argumentTypes": null, "id": 7044, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1298:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 7045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1298:16:23", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1298:59:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 7043, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1291:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 7042, "name": "string", "nodeType": "ElementaryTypeName", "src": "1291:6:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1291:67:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 7037, "id": 7054, "nodeType": "Return", "src": "1284:74:23" } ] }, "documentation": null, "functionSelector": "06fdde03", "id": 7056, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7034, "nodeType": "ParameterList", "parameters": [], "src": "1178:2:23" }, "returnParameters": { "id": 7037, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7036, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7056, "src": "1202:13:23", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 7035, "name": "string", "nodeType": "ElementaryTypeName", "src": "1202:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1201:15:23" }, "scope": 7347, "src": "1165:200:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7067, "nodeType": "Block", "src": "1419:54:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7062, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1443:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 7061, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "1436:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 7063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1436:19:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 7064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 10551, "src": "1436:28:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 7065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1436:30:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 7060, "id": 7066, "nodeType": "Return", "src": "1429:37:23" } ] }, "documentation": null, "functionSelector": "313ce567", "id": 7068, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7057, "nodeType": "ParameterList", "parameters": [], "src": "1388:2:23" }, "returnParameters": { "id": 7060, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7059, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7068, "src": "1412:5:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 7058, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1412:5:23", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1411:7:23" }, "scope": 7347, "src": "1371:102:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7121, "nodeType": "Block", "src": "1710:261:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7079, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1728:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7080, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1738:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7083, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7081, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1747:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1747:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1738:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1728:30:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "42414c414e43455f4e4f545f454e4f554748", "id": 7085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1760:20:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" }, "value": "BALANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" } ], "id": 7078, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1720:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1720:61:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7087, "nodeType": "ExpressionStatement", "src": "1720:61:23" }, { "expression": { "argumentTypes": null, "id": 7099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7088, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1792:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7091, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7089, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1801:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1801:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1792:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7097, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1840:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7092, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1815:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7095, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7093, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1824:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1824:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1815:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "1815:24:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1815:32:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1792:55:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7100, "nodeType": "ExpressionStatement", "src": "1792:55:23" }, { "expression": { "argumentTypes": null, "id": 7110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7101, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1857:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7103, "indexExpression": { "argumentTypes": null, "id": 7102, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1866:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1857:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7108, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1889:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7104, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1872:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7106, "indexExpression": { "argumentTypes": null, "id": 7105, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1881:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1872:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "1872:16:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1872:24:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1857:39:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7111, "nodeType": "ExpressionStatement", "src": "1857:39:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7113, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1920:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1920:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7115, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1932:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7116, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1936:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7112, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "1911:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1911:32:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7118, "nodeType": "EmitStatement", "src": "1906:37:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1960:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7077, "id": 7120, "nodeType": "Return", "src": "1953:11:23" } ] }, "documentation": { "id": 7069, "nodeType": "StructuredDocumentation", "src": "1479:158:23", "text": " @dev transfer token for a specified address\n @param to The address to transfer to.\n @param amount The amount to be transferred." }, "functionSelector": "a9059cbb", "id": 7122, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7074, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7071, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1660:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7070, "name": "address", "nodeType": "ElementaryTypeName", "src": "1660:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7073, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1672:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7072, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1672:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1659:28:23" }, "returnParameters": { "id": 7077, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7076, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1704:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1704:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1703:6:23" }, "scope": 7347, "src": "1642:329:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7134, "nodeType": "Block", "src": "2270:39:23", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7130, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2287:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7132, "indexExpression": { "argumentTypes": null, "id": 7131, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7125, "src": "2296:5:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2287:15:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 7129, "id": 7133, "nodeType": "Return", "src": "2280:22:23" } ] }, "documentation": { "id": 7123, "nodeType": "StructuredDocumentation", "src": "1977:214:23", "text": " @dev Gets the balance of the specified address.\n @param owner The address to query the the balance of.\n @return balance An uint256 representing the amount owned by the passed address." }, "functionSelector": "70a08231", "id": 7135, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7126, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7125, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7135, "src": "2215:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7124, "name": "address", "nodeType": "ElementaryTypeName", "src": "2215:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2214:15:23" }, "returnParameters": { "id": 7129, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7128, "mutability": "mutable", "name": "balance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7135, "src": "2253:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2253:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2252:17:23" }, "scope": 7347, "src": "2196:113:23", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { "id": 7215, "nodeType": "Block", "src": "2712:390:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7148, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2730:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7149, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2740:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7151, "indexExpression": { "argumentTypes": null, "id": 7150, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2749:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2740:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2730:24:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "42414c414e43455f4e4f545f454e4f554748", "id": 7153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2756:20:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" }, "value": "BALANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" } ], "id": 7147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2722:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2722:55:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7155, "nodeType": "ExpressionStatement", "src": "2722:55:23" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7157, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2795:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7158, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2805:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7160, "indexExpression": { "argumentTypes": null, "id": 7159, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2813:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2805:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7163, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7161, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2819:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2819:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2805:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2795:35:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "414c4c4f57414e43455f4e4f545f454e4f554748", "id": 7165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2832:22:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_28638f118cb48e54afcdd39bdb97baeb95a670cffee1fd95f73350a923dc1c6f", "typeString": "literal_string \"ALLOWANCE_NOT_ENOUGH\"" }, "value": "ALLOWANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_28638f118cb48e54afcdd39bdb97baeb95a670cffee1fd95f73350a923dc1c6f", "typeString": "literal_string \"ALLOWANCE_NOT_ENOUGH\"" } ], "id": 7156, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2787:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2787:68:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7167, "nodeType": "ExpressionStatement", "src": "2787:68:23" }, { "expression": { "argumentTypes": null, "id": 7177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7168, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2866:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7170, "indexExpression": { "argumentTypes": null, "id": 7169, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2875:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2866:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7175, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2902:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7171, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2883:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7173, "indexExpression": { "argumentTypes": null, "id": 7172, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2892:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2883:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "2883:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2883:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2866:43:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7178, "nodeType": "ExpressionStatement", "src": "2866:43:23" }, { "expression": { "argumentTypes": null, "id": 7188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7179, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2919:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7181, "indexExpression": { "argumentTypes": null, "id": 7180, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "2928:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2919:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7186, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2951:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7182, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2934:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7184, "indexExpression": { "argumentTypes": null, "id": 7183, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "2943:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2934:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "2934:16:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2934:24:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2919:39:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7189, "nodeType": "ExpressionStatement", "src": "2919:39:23" }, { "expression": { "argumentTypes": null, "id": 7205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7190, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2968:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7194, "indexExpression": { "argumentTypes": null, "id": 7191, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2976:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2968:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7195, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7192, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2982:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2982:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2968:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7203, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "3026:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7196, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2996:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7198, "indexExpression": { "argumentTypes": null, "id": 7197, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "3004:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2996:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7201, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7199, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3010:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3010:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2996:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "2996:29:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2996:37:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2968:65:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7206, "nodeType": "ExpressionStatement", "src": "2968:65:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7208, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "3057:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7209, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "3063:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7210, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "3067:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7207, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "3048:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3048:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7212, "nodeType": "EmitStatement", "src": "3043:31:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3091:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7146, "id": 7214, "nodeType": "Return", "src": "3084:11:23" } ] }, "documentation": { "id": 7136, "nodeType": "StructuredDocumentation", "src": "2315:276:23", "text": " @dev Transfer tokens from one address to another\n @param from address The address which you want to send tokens from\n @param to address The address which you want to transfer to\n @param amount uint256 the amount of tokens to be transferred" }, "functionSelector": "23b872dd", "id": 7216, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7143, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7138, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2627:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7137, "name": "address", "nodeType": "ElementaryTypeName", "src": "2627:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7140, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2649:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7139, "name": "address", "nodeType": "ElementaryTypeName", "src": "2649:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7142, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2669:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2669:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2617:72:23" }, "returnParameters": { "id": 7146, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7145, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2706:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7144, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2706:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "2705:6:23" }, "scope": 7347, "src": "2596:506:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7244, "nodeType": "Block", "src": "3417:127:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7226, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "3427:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7230, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7227, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3435:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3435:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3427:19:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7231, "indexExpression": { "argumentTypes": null, "id": 7229, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7219, "src": "3447:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3427:28:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 7232, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7221, "src": "3458:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3427:37:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7234, "nodeType": "ExpressionStatement", "src": "3427:37:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7236, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3488:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3488:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7238, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7219, "src": "3500:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7239, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7221, "src": "3509:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7235, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "3479:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7240, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3479:37:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7241, "nodeType": "EmitStatement", "src": "3474:42:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3533:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7225, "id": 7243, "nodeType": "Return", "src": "3526:11:23" } ] }, "documentation": { "id": 7217, "nodeType": "StructuredDocumentation", "src": "3108:232:23", "text": " @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n @param spender The address which will spend the funds.\n @param amount The amount of tokens to be spent." }, "functionSelector": "095ea7b3", "id": 7245, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7222, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7219, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3362:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7218, "name": "address", "nodeType": "ElementaryTypeName", "src": "3362:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7221, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3379:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7220, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3379:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3361:33:23" }, "returnParameters": { "id": 7225, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7224, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3411:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7223, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3411:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3410:6:23" }, "scope": 7347, "src": "3345:199:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7261, "nodeType": "Block", "src": "3956:47:23", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7255, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "3973:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7257, "indexExpression": { "argumentTypes": null, "id": 7256, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "3981:5:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3973:14:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7259, "indexExpression": { "argumentTypes": null, "id": 7258, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7250, "src": "3988:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3973:23:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 7254, "id": 7260, "nodeType": "Return", "src": "3966:30:23" } ] }, "documentation": { "id": 7246, "nodeType": "StructuredDocumentation", "src": "3550:320:23", "text": " @dev Function to check the amount of tokens that an owner allowed to a spender.\n @param owner address The address which owns the funds.\n @param spender address The address which will spend the funds.\n @return A uint256 specifying the amount of tokens still available for the spender." }, "functionSelector": "dd62ed3e", "id": 7262, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7251, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7248, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3894:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7247, "name": "address", "nodeType": "ElementaryTypeName", "src": "3894:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7250, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3909:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7249, "name": "address", "nodeType": "ElementaryTypeName", "src": "3909:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3893:32:23" }, "returnParameters": { "id": 7254, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7253, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3947:7:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7252, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3947:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3946:9:23" }, "scope": 7347, "src": "3875:128:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7303, "nodeType": "Block", "src": "4071:185:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7271, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4081:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7273, "indexExpression": { "argumentTypes": null, "id": 7272, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4090:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4081:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7278, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4117:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7274, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4098:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7276, "indexExpression": { "argumentTypes": null, "id": 7275, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4107:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4098:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "4098:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4098:25:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4081:42:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7281, "nodeType": "ExpressionStatement", "src": "4081:42:23" }, { "expression": { "argumentTypes": null, "id": 7287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7282, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4133:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7285, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4163:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 7283, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4147:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "4147:15:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4147:22:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4133:36:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7288, "nodeType": "ExpressionStatement", "src": "4133:36:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7290, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4189:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7291, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4195:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7289, "name": "Mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "4184:4:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 7292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4184:17:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7293, "nodeType": "EmitStatement", "src": "4179:22:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 7297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4233:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 7296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4225:7:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 7295, "name": "address", "nodeType": "ElementaryTypeName", "src": "4225:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4225:10:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7299, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4237:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7300, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4243:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7294, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "4216:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4216:33:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7302, "nodeType": "EmitStatement", "src": "4211:38:23" } ] }, "documentation": null, "functionSelector": "40c10f19", "id": 7304, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 7269, "modifierName": { "argumentTypes": null, "id": 7268, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11198, "src": "4061:9:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4061:9:23" } ], "name": "mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7267, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7264, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7304, "src": "4023:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7263, "name": "address", "nodeType": "ElementaryTypeName", "src": "4023:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7266, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7304, "src": "4037:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7265, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4037:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4022:29:23" }, "returnParameters": { "id": 7270, "nodeType": "ParameterList", "parameters": [], "src": "4071:0:23" }, "scope": 7347, "src": "4009:247:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 7345, "nodeType": "Block", "src": "4324:185:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7313, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4334:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7315, "indexExpression": { "argumentTypes": null, "id": 7314, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4343:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4334:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7320, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4370:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7316, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4351:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7318, "indexExpression": { "argumentTypes": null, "id": 7317, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4360:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4351:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "4351:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4351:25:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4334:42:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7323, "nodeType": "ExpressionStatement", "src": "4334:42:23" }, { "expression": { "argumentTypes": null, "id": 7329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7324, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4386:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7327, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4416:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 7325, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4400:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "4400:15:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4400:22:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4386:36:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7330, "nodeType": "ExpressionStatement", "src": "4386:36:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7332, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4442:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7333, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4448:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7331, "name": "Burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7023, "src": "4437:4:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 7334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4437:17:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7335, "nodeType": "EmitStatement", "src": "4432:22:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7337, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4478:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 7340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4492:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 7339, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4484:7:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 7338, "name": "address", "nodeType": "ElementaryTypeName", "src": "4484:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4484:10:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7342, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4496:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7336, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "4469:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7343, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4469:33:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7344, "nodeType": "EmitStatement", "src": "4464:38:23" } ] }, "documentation": null, "functionSelector": "9dc29fac", "id": 7346, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 7311, "modifierName": { "argumentTypes": null, "id": 7310, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11198, "src": "4314:9:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4314:9:23" } ], "name": "burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7309, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7306, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7346, "src": "4276:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7305, "name": "address", "nodeType": "ElementaryTypeName", "src": "4276:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7308, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7346, "src": "4290:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4290:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4275:29:23" }, "returnParameters": { "id": 7312, "nodeType": "ParameterList", "parameters": [], "src": "4324:0:23" }, "scope": 7347, "src": "4262:247:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 7348, "src": "426:4085:23" } ], "src": "78:4434:23" }, "legacyAST": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/impl/DODOLpToken.sol", "exportedSymbols": { "DODOLpToken": [ 7347 ] }, "id": 7348, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 6965, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:23" }, { "id": 6966, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:23" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol", "file": "../intf/IERC20.sol", "id": 6968, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 10608, "src": "136:42:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6967, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "144:6:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol", "file": "../lib/SafeMath.sol", "id": 6970, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 11624, "src": "179:45:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6969, "name": "SafeMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "187:8:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/Ownable.sol", "file": "../lib/Ownable.sol", "id": 6972, "nodeType": "ImportDirective", "scope": 7348, "sourceUnit": 11272, "src": "225:43:23", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 6971, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "233:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 6974, "name": "Ownable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11271, "src": "450:7:23", "typeDescriptions": { "typeIdentifier": "t_contract$_Ownable_$11271", "typeString": "contract Ownable" } }, "id": 6975, "nodeType": "InheritanceSpecifier", "src": "450:7:23" } ], "contractDependencies": [ 11271 ], "contractKind": "contract", "documentation": { "id": 6973, "nodeType": "StructuredDocumentation", "src": "270:155:23", "text": " @title DODOLpToken\n @author DODO Breeder\n @notice Tokenize liquidity pool assets. An ordinary ERC20 contract with mint and burn functions" }, "fullyImplemented": true, "id": 7347, "linearizedBaseContracts": [ 7347, 11271 ], "name": "DODOLpToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 6978, "libraryName": { "contractScope": null, "id": 6976, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11623, "src": "470:8:23", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$11623", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "464:27:23", "typeName": { "id": 6977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "483:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "95d89b41", "id": 6981, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "497:28:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 6979, "name": "string", "nodeType": "ElementaryTypeName", "src": "497:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "444c50", "id": 6980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "520:5:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad4ac2ef6228a2adb212e98f01d891da2027029dcf86bc341ca6cc047d65e8a7", "typeString": "literal_string \"DLP\"" }, "value": "DLP" }, "visibility": "public" }, { "constant": false, "functionSelector": "13096a41", "id": 6983, "mutability": "mutable", "name": "originToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "531:26:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6982, "name": "address", "nodeType": "ElementaryTypeName", "src": "531:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "18160ddd", "id": 6985, "mutability": "mutable", "name": "totalSupply", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "564:26:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 6984, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "564:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 6989, "mutability": "mutable", "name": "balances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "596:45:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 6988, "keyType": { "id": 6986, "name": "address", "nodeType": "ElementaryTypeName", "src": "604:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "596:27:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "615:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 6995, "mutability": "mutable", "name": "allowed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7347, "src": "647:64:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 6994, "keyType": { "id": 6990, "name": "address", "nodeType": "ElementaryTypeName", "src": "655:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "647:47:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 6993, "keyType": { "id": 6991, "name": "address", "nodeType": "ElementaryTypeName", "src": "674:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "666:27:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "685:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "internal" }, { "anonymous": false, "documentation": null, "id": 7003, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { "id": 7002, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 6997, "indexed": true, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "774:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6996, "name": "address", "nodeType": "ElementaryTypeName", "src": "774:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 6999, "indexed": true, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "796:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 6998, "name": "address", "nodeType": "ElementaryTypeName", "src": "796:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7001, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7003, "src": "816:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "816:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "773:58:23" }, "src": "759:73:23" }, { "anonymous": false, "documentation": null, "id": 7011, "name": "Approval", "nodeType": "EventDefinition", "parameters": { "id": 7010, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7005, "indexed": true, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "853:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7004, "name": "address", "nodeType": "ElementaryTypeName", "src": "853:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7007, "indexed": true, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "876:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7006, "name": "address", "nodeType": "ElementaryTypeName", "src": "876:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7009, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7011, "src": "901:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "901:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "852:64:23" }, "src": "838:79:23" }, { "anonymous": false, "documentation": null, "id": 7017, "name": "Mint", "nodeType": "EventDefinition", "parameters": { "id": 7016, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7013, "indexed": true, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7017, "src": "934:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7012, "name": "address", "nodeType": "ElementaryTypeName", "src": "934:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7015, "indexed": false, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7017, "src": "956:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "956:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "933:37:23" }, "src": "923:48:23" }, { "anonymous": false, "documentation": null, "id": 7023, "name": "Burn", "nodeType": "EventDefinition", "parameters": { "id": 7022, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7019, "indexed": true, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7023, "src": "988:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7018, "name": "address", "nodeType": "ElementaryTypeName", "src": "988:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7021, "indexed": false, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7023, "src": "1010:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1010:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "987:37:23" }, "src": "977:48:23" }, { "body": { "id": 7032, "nodeType": "Block", "src": "1116:43:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7028, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1126:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 7029, "name": "_originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "1140:12:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1126:26:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 7031, "nodeType": "ExpressionStatement", "src": "1126:26:23" } ] }, "documentation": null, "id": 7033, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7026, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7025, "mutability": "mutable", "name": "_originToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7033, "src": "1087:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7024, "name": "address", "nodeType": "ElementaryTypeName", "src": "1087:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1086:22:23" }, "returnParameters": { "id": 7027, "nodeType": "ParameterList", "parameters": [], "src": "1116:0:23" }, "scope": 7347, "src": "1075:84:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7055, "nodeType": "Block", "src": "1217:148:23", "statements": [ { "assignments": [ 7039 ], "declarations": [ { "constant": false, "id": 7039, "mutability": "mutable", "name": "lpTokenSuffix", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7055, "src": "1227:27:23", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 7038, "name": "string", "nodeType": "ElementaryTypeName", "src": "1227:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 7041, "initialValue": { "argumentTypes": null, "hexValue": "5f444f444f5f4c505f544f4b454e5f", "id": 7040, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1257:17:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fd33f461926c288e22976ed16405c386e401ae2dabde8aeb3b67fd7ee18035e7", "typeString": "literal_string \"_DODO_LP_TOKEN_\"" }, "value": "_DODO_LP_TOKEN_" }, "nodeType": "VariableDeclarationStatement", "src": "1227:47:23" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7047, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1322:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 7046, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "1315:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 7048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1315:19:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 7049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 10556, "src": "1315:24:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view external returns (string memory)" } }, "id": 7050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1315:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 7051, "name": "lpTokenSuffix", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7039, "src": "1343:13:23", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "argumentTypes": null, "id": 7044, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1298:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 7045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1298:16:23", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1298:59:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 7043, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1291:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 7042, "name": "string", "nodeType": "ElementaryTypeName", "src": "1291:6:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1291:67:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 7037, "id": 7054, "nodeType": "Return", "src": "1284:74:23" } ] }, "documentation": null, "functionSelector": "06fdde03", "id": 7056, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7034, "nodeType": "ParameterList", "parameters": [], "src": "1178:2:23" }, "returnParameters": { "id": 7037, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7036, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7056, "src": "1202:13:23", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 7035, "name": "string", "nodeType": "ElementaryTypeName", "src": "1202:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1201:15:23" }, "scope": 7347, "src": "1165:200:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7067, "nodeType": "Block", "src": "1419:54:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7062, "name": "originToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6983, "src": "1443:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 7061, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "1436:6:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 7063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1436:19:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 7064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 10551, "src": "1436:28:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 7065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1436:30:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 7060, "id": 7066, "nodeType": "Return", "src": "1429:37:23" } ] }, "documentation": null, "functionSelector": "313ce567", "id": 7068, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7057, "nodeType": "ParameterList", "parameters": [], "src": "1388:2:23" }, "returnParameters": { "id": 7060, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7059, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7068, "src": "1412:5:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 7058, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1412:5:23", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1411:7:23" }, "scope": 7347, "src": "1371:102:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7121, "nodeType": "Block", "src": "1710:261:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7079, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1728:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7080, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1738:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7083, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7081, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1747:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1747:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1738:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1728:30:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "42414c414e43455f4e4f545f454e4f554748", "id": 7085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1760:20:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" }, "value": "BALANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" } ], "id": 7078, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1720:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1720:61:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7087, "nodeType": "ExpressionStatement", "src": "1720:61:23" }, { "expression": { "argumentTypes": null, "id": 7099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7088, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1792:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7091, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7089, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1801:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1801:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1792:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7097, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1840:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7092, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1815:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7095, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7093, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1824:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1824:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1815:20:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "1815:24:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1815:32:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1792:55:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7100, "nodeType": "ExpressionStatement", "src": "1792:55:23" }, { "expression": { "argumentTypes": null, "id": 7110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7101, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1857:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7103, "indexExpression": { "argumentTypes": null, "id": 7102, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1866:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1857:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7108, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1889:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7104, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "1872:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7106, "indexExpression": { "argumentTypes": null, "id": 7105, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1881:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1872:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "1872:16:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1872:24:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1857:39:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7111, "nodeType": "ExpressionStatement", "src": "1857:39:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7113, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1920:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1920:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7115, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7071, "src": "1932:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7116, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7073, "src": "1936:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7112, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "1911:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1911:32:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7118, "nodeType": "EmitStatement", "src": "1906:37:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1960:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7077, "id": 7120, "nodeType": "Return", "src": "1953:11:23" } ] }, "documentation": { "id": 7069, "nodeType": "StructuredDocumentation", "src": "1479:158:23", "text": " @dev transfer token for a specified address\n @param to The address to transfer to.\n @param amount The amount to be transferred." }, "functionSelector": "a9059cbb", "id": 7122, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7074, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7071, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1660:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7070, "name": "address", "nodeType": "ElementaryTypeName", "src": "1660:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7073, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1672:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7072, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1672:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1659:28:23" }, "returnParameters": { "id": 7077, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7076, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7122, "src": "1704:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1704:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1703:6:23" }, "scope": 7347, "src": "1642:329:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7134, "nodeType": "Block", "src": "2270:39:23", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7130, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2287:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7132, "indexExpression": { "argumentTypes": null, "id": 7131, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7125, "src": "2296:5:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2287:15:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 7129, "id": 7133, "nodeType": "Return", "src": "2280:22:23" } ] }, "documentation": { "id": 7123, "nodeType": "StructuredDocumentation", "src": "1977:214:23", "text": " @dev Gets the balance of the specified address.\n @param owner The address to query the the balance of.\n @return balance An uint256 representing the amount owned by the passed address." }, "functionSelector": "70a08231", "id": 7135, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7126, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7125, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7135, "src": "2215:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7124, "name": "address", "nodeType": "ElementaryTypeName", "src": "2215:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2214:15:23" }, "returnParameters": { "id": 7129, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7128, "mutability": "mutable", "name": "balance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7135, "src": "2253:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2253:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2252:17:23" }, "scope": 7347, "src": "2196:113:23", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { "id": 7215, "nodeType": "Block", "src": "2712:390:23", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7148, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2730:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7149, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2740:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7151, "indexExpression": { "argumentTypes": null, "id": 7150, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2749:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2740:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2730:24:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "42414c414e43455f4e4f545f454e4f554748", "id": 7153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2756:20:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" }, "value": "BALANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cdd726e298d9165e3d91fe96d56676b5342c508882ebbe585be31adbc426425d", "typeString": "literal_string \"BALANCE_NOT_ENOUGH\"" } ], "id": 7147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2722:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2722:55:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7155, "nodeType": "ExpressionStatement", "src": "2722:55:23" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 7164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7157, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2795:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7158, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2805:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7160, "indexExpression": { "argumentTypes": null, "id": 7159, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2813:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2805:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7163, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7161, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2819:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2819:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2805:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2795:35:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "414c4c4f57414e43455f4e4f545f454e4f554748", "id": 7165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2832:22:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_28638f118cb48e54afcdd39bdb97baeb95a670cffee1fd95f73350a923dc1c6f", "typeString": "literal_string \"ALLOWANCE_NOT_ENOUGH\"" }, "value": "ALLOWANCE_NOT_ENOUGH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_28638f118cb48e54afcdd39bdb97baeb95a670cffee1fd95f73350a923dc1c6f", "typeString": "literal_string \"ALLOWANCE_NOT_ENOUGH\"" } ], "id": 7156, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2787:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2787:68:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7167, "nodeType": "ExpressionStatement", "src": "2787:68:23" }, { "expression": { "argumentTypes": null, "id": 7177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7168, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2866:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7170, "indexExpression": { "argumentTypes": null, "id": 7169, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2875:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2866:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7175, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2902:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7171, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2883:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7173, "indexExpression": { "argumentTypes": null, "id": 7172, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2892:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2883:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "2883:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2883:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2866:43:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7178, "nodeType": "ExpressionStatement", "src": "2866:43:23" }, { "expression": { "argumentTypes": null, "id": 7188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7179, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2919:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7181, "indexExpression": { "argumentTypes": null, "id": 7180, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "2928:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2919:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7186, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "2951:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7182, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "2934:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7184, "indexExpression": { "argumentTypes": null, "id": 7183, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "2943:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2934:12:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "2934:16:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2934:24:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2919:39:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7189, "nodeType": "ExpressionStatement", "src": "2919:39:23" }, { "expression": { "argumentTypes": null, "id": 7205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7190, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2968:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7194, "indexExpression": { "argumentTypes": null, "id": 7191, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "2976:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2968:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7195, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7192, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2982:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2982:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2968:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7203, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "3026:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7196, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "2996:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7198, "indexExpression": { "argumentTypes": null, "id": 7197, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "3004:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2996:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7201, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7199, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3010:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3010:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2996:25:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "2996:29:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2996:37:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2968:65:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7206, "nodeType": "ExpressionStatement", "src": "2968:65:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7208, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7138, "src": "3057:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7209, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7140, "src": "3063:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7210, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7142, "src": "3067:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7207, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "3048:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3048:26:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7212, "nodeType": "EmitStatement", "src": "3043:31:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3091:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7146, "id": 7214, "nodeType": "Return", "src": "3084:11:23" } ] }, "documentation": { "id": 7136, "nodeType": "StructuredDocumentation", "src": "2315:276:23", "text": " @dev Transfer tokens from one address to another\n @param from address The address which you want to send tokens from\n @param to address The address which you want to transfer to\n @param amount uint256 the amount of tokens to be transferred" }, "functionSelector": "23b872dd", "id": 7216, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7143, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7138, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2627:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7137, "name": "address", "nodeType": "ElementaryTypeName", "src": "2627:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7140, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2649:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7139, "name": "address", "nodeType": "ElementaryTypeName", "src": "2649:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7142, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2669:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2669:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2617:72:23" }, "returnParameters": { "id": 7146, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7145, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7216, "src": "2706:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7144, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2706:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "2705:6:23" }, "scope": 7347, "src": "2596:506:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7244, "nodeType": "Block", "src": "3417:127:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7226, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "3427:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7230, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7227, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3435:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3435:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3427:19:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7231, "indexExpression": { "argumentTypes": null, "id": 7229, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7219, "src": "3447:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3427:28:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 7232, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7221, "src": "3458:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3427:37:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7234, "nodeType": "ExpressionStatement", "src": "3427:37:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 7236, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3488:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 7237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3488:10:23", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7238, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7219, "src": "3500:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7239, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7221, "src": "3509:6:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7235, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "3479:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7240, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3479:37:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7241, "nodeType": "EmitStatement", "src": "3474:42:23" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 7242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3533:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 7225, "id": 7243, "nodeType": "Return", "src": "3526:11:23" } ] }, "documentation": { "id": 7217, "nodeType": "StructuredDocumentation", "src": "3108:232:23", "text": " @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n @param spender The address which will spend the funds.\n @param amount The amount of tokens to be spent." }, "functionSelector": "095ea7b3", "id": 7245, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7222, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7219, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3362:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7218, "name": "address", "nodeType": "ElementaryTypeName", "src": "3362:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7221, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3379:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7220, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3379:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3361:33:23" }, "returnParameters": { "id": 7225, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7224, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7245, "src": "3411:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 7223, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3411:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3410:6:23" }, "scope": 7347, "src": "3345:199:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 7261, "nodeType": "Block", "src": "3956:47:23", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7255, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6995, "src": "3973:7:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 7257, "indexExpression": { "argumentTypes": null, "id": 7256, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "3981:5:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3973:14:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7259, "indexExpression": { "argumentTypes": null, "id": 7258, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7250, "src": "3988:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3973:23:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 7254, "id": 7260, "nodeType": "Return", "src": "3966:30:23" } ] }, "documentation": { "id": 7246, "nodeType": "StructuredDocumentation", "src": "3550:320:23", "text": " @dev Function to check the amount of tokens that an owner allowed to a spender.\n @param owner address The address which owns the funds.\n @param spender address The address which will spend the funds.\n @return A uint256 specifying the amount of tokens still available for the spender." }, "functionSelector": "dd62ed3e", "id": 7262, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7251, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7248, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3894:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7247, "name": "address", "nodeType": "ElementaryTypeName", "src": "3894:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7250, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3909:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7249, "name": "address", "nodeType": "ElementaryTypeName", "src": "3909:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3893:32:23" }, "returnParameters": { "id": 7254, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7253, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7262, "src": "3947:7:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7252, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3947:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3946:9:23" }, "scope": 7347, "src": "3875:128:23", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 7303, "nodeType": "Block", "src": "4071:185:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7271, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4081:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7273, "indexExpression": { "argumentTypes": null, "id": 7272, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4090:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4081:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7278, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4117:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7274, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4098:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7276, "indexExpression": { "argumentTypes": null, "id": 7275, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4107:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4098:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "4098:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4098:25:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4081:42:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7281, "nodeType": "ExpressionStatement", "src": "4081:42:23" }, { "expression": { "argumentTypes": null, "id": 7287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7282, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4133:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7285, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4163:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 7283, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4147:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 11582, "src": "4147:15:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4147:22:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4133:36:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7288, "nodeType": "ExpressionStatement", "src": "4133:36:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7290, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4189:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7291, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4195:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7289, "name": "Mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "4184:4:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 7292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4184:17:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7293, "nodeType": "EmitStatement", "src": "4179:22:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 7297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4233:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 7296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4225:7:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 7295, "name": "address", "nodeType": "ElementaryTypeName", "src": "4225:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4225:10:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7299, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7264, "src": "4237:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7300, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7266, "src": "4243:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7294, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "4216:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4216:33:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7302, "nodeType": "EmitStatement", "src": "4211:38:23" } ] }, "documentation": null, "functionSelector": "40c10f19", "id": 7304, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 7269, "modifierName": { "argumentTypes": null, "id": 7268, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11198, "src": "4061:9:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4061:9:23" } ], "name": "mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7267, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7264, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7304, "src": "4023:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7263, "name": "address", "nodeType": "ElementaryTypeName", "src": "4023:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7266, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7304, "src": "4037:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7265, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4037:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4022:29:23" }, "returnParameters": { "id": 7270, "nodeType": "ParameterList", "parameters": [], "src": "4071:0:23" }, "scope": 7347, "src": "4009:247:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 7345, "nodeType": "Block", "src": "4324:185:23", "statements": [ { "expression": { "argumentTypes": null, "id": 7322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7313, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4334:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7315, "indexExpression": { "argumentTypes": null, "id": 7314, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4343:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4334:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7320, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4370:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 7316, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6989, "src": "4351:8:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 7318, "indexExpression": { "argumentTypes": null, "id": 7317, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4360:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4351:14:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "4351:18:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4351:25:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4334:42:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7323, "nodeType": "ExpressionStatement", "src": "4334:42:23" }, { "expression": { "argumentTypes": null, "id": 7329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 7324, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4386:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7327, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4416:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 7325, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6985, "src": "4400:11:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "4400:15:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4400:22:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4386:36:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 7330, "nodeType": "ExpressionStatement", "src": "4386:36:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7332, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4442:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 7333, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4448:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7331, "name": "Burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7023, "src": "4437:4:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 7334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4437:17:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7335, "nodeType": "EmitStatement", "src": "4432:22:23" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7337, "name": "user", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7306, "src": "4478:4:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 7340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4492:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 7339, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4484:7:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 7338, "name": "address", "nodeType": "ElementaryTypeName", "src": "4484:7:23", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 7341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4484:10:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 7342, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7308, "src": "4496:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 7336, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7003, "src": "4469:8:23", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 7343, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4469:33:23", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7344, "nodeType": "EmitStatement", "src": "4464:38:23" } ] }, "documentation": null, "functionSelector": "9dc29fac", "id": 7346, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 7311, "modifierName": { "argumentTypes": null, "id": 7310, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11198, "src": "4314:9:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4314:9:23" } ], "name": "burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 7309, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7306, "mutability": "mutable", "name": "user", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7346, "src": "4276:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 7305, "name": "address", "nodeType": "ElementaryTypeName", "src": "4276:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7308, "mutability": "mutable", "name": "value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 7346, "src": "4290:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4290:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4275:29:23" }, "returnParameters": { "id": 7312, "nodeType": "ParameterList", "parameters": [], "src": "4324:0:23" }, "scope": 7347, "src": "4262:247:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 7348, "src": "426:4085:23" } ], "src": "78:4434:23" }, "compiler": { "name": "solc", "version": "0.6.9+commit.3e3065ac.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-06T08:03:35.680Z", "devdoc": { "author": "DODO Breeder", "methods": { "allowance(address,address)": { "details": "Function to check the amount of tokens that an owner allowed to a spender.", "params": { "owner": "address The address which owns the funds.", "spender": "address The address which will spend the funds." }, "returns": { "_0": "A uint256 specifying the amount of tokens still available for the spender." } }, "approve(address,uint256)": { "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.", "params": { "amount": "The amount of tokens to be spent.", "spender": "The address which will spend the funds." } }, "balanceOf(address)": { "details": "Gets the balance of the specified address.", "params": { "owner": "The address to query the the balance of." }, "returns": { "balance": "An uint256 representing the amount owned by the passed address." } }, "transfer(address,uint256)": { "details": "transfer token for a specified address", "params": { "amount": "The amount to be transferred.", "to": "The address to transfer to." } }, "transferFrom(address,address,uint256)": { "details": "Transfer tokens from one address to another", "params": { "amount": "uint256 the amount of tokens to be transferred", "from": "address The address which you want to send tokens from", "to": "address The address which you want to transfer to" } } }, "title": "DODOLpToken" }, "userdoc": { "methods": {}, "notice": "Tokenize liquidity pool assets. An ordinary ERC20 contract with mint and burn functions" } }