{ "contractName": "Dispenser", "abi": [ { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "datatokensList", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatokenAddress", "type": "address" } ], "name": "Activated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatokenAddress", "type": "address" } ], "name": "Deactivated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatokenAddress", "type": "address" } ], "name": "AcceptedMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatokenAddress", "type": "address" } ], "name": "RemovedMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatokenAddress", "type": "address" }, { "indexed": true, "name": "userAddress", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "TokensDispensed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "datatoken", "type": "address" }, { "indexed": true, "name": "owner", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "OwnerWithdrawed", "type": "event" }, { "constant": true, "inputs": [ { "name": "datatoken", "type": "address" } ], "name": "status", "outputs": [ { "name": "active", "type": "bool" }, { "name": "owner", "type": "address" }, { "name": "minterApproved", "type": "bool" }, { "name": "isTrueMinter", "type": "bool" }, { "name": "maxTokens", "type": "uint256" }, { "name": "maxBalance", "type": "uint256" }, { "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" }, { "name": "maxTokens", "type": "uint256" }, { "name": "maxBalance", "type": "uint256" } ], "name": "activate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" } ], "name": "deactivate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" } ], "name": "acceptMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" } ], "name": "removeMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" }, { "name": "amount", "type": "uint256" } ], "name": "dispense", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "datatoken", "type": "address" } ], "name": "ownerWithdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"}],\"name\":\"removeMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"datatokensList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"}],\"name\":\"deactivate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"}],\"name\":\"status\",\"outputs\":[{\"name\":\"active\",\"type\":\"bool\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"minterApproved\",\"type\":\"bool\"},{\"name\":\"isTrueMinter\",\"type\":\"bool\"},{\"name\":\"maxTokens\",\"type\":\"uint256\"},{\"name\":\"maxBalance\",\"type\":\"uint256\"},{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"},{\"name\":\"maxTokens\",\"type\":\"uint256\"},{\"name\":\"maxBalance\",\"type\":\"uint256\"}],\"name\":\"activate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dispense\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"}],\"name\":\"acceptMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"datatoken\",\"type\":\"address\"}],\"name\":\"ownerWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatokenAddress\",\"type\":\"address\"}],\"name\":\"Activated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatokenAddress\",\"type\":\"address\"}],\"name\":\"Deactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatokenAddress\",\"type\":\"address\"}],\"name\":\"AcceptedMinter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatokenAddress\",\"type\":\"address\"}],\"name\":\"RemovedMinter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatokenAddress\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"userAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensDispensed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"datatoken\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OwnerWithdrawed\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"acceptMinter(address)\":{\"details\":\"acceptMinter Accepts Minter role (existing datatoken minter has to call datatoken.proposeMinter(dispenserAddress) first)\",\"params\":{\"datatoken\":\"refers to datatoken address.\"}},\"activate(address,uint256,uint256)\":{\"details\":\"activate Activate a new dispenser\",\"params\":{\"datatoken\":\"refers to datatoken address.\",\"maxBalance\":\"- max balance of requester.\",\"maxTokens\":\"- max tokens to dispense\"}},\"deactivate(address)\":{\"details\":\"deactivate Deactivate an existing dispenser\",\"params\":{\"datatoken\":\"refers to datatoken address.\"}},\"dispense(address,uint256)\":{\"details\":\"dispense Dispense datatokens to caller. The dispenser must be active, hold enough DT (or be able to mint more) and respect maxTokens/maxBalance requirements\",\"params\":{\"datatoken\":\"amount of datatokens required.\"}},\"ownerWithdraw(address)\":{\"details\":\"ownerWithdraw Allow owner to withdraw all datatokens in this dispenser balance\",\"params\":{\"datatoken\":\"refers to datatoken address.\"}},\"removeMinter(address)\":{\"details\":\"removeMinter Removes Minter role and proposes the owner as a new minter (the owner has to call approveMinter after this)\",\"params\":{\"datatoken\":\"refers to datatoken address.\"}},\"status(address)\":{\"details\":\"status Get information about a datatoken dispenser\",\"params\":{\"datatoken\":\"refers to datatoken address.\"},\"return\":\"active - if the dispenser is active for this datatokenowner - owner of this dispenserminterApproved - if the dispenser is a minter for this datatokenisTrueMinter - check the datatoken contract if this contract is really a mintermaxTokens - max tokens to dispensemaxBalance - max balance of requester. If the balance is higher, the dispense is rejectedbalance - internal balance of the contract (if any)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/ahmedali/Desktop/work/ocean/contracts/contracts/dispenser/Dispenser.sol\":\"Dispenser\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/ahmedali/Desktop/work/ocean/contracts/contracts/dispenser/Dispenser.sol\":{\"keccak256\":\"0x6acf943424d35f94f558e980af605acbee444243f64a79f9a6d7c8e49e6ae2c7\",\"urls\":[\"bzzr://76b4928f491fbabfe0f0f9b235f3bc5ebef8ac4476ce01aa934d1b8dd36d1a4b\"]},\"/Users/ahmedali/Desktop/work/ocean/contracts/contracts/interfaces/IERC20Template.sol\":{\"keccak256\":\"0x022ebed2ba4949e96a05cc394cf690d8fd3190a4733cebe8cbe930ac25cfde18\",\"urls\":[\"bzzr://2fa3d5cae14f0af7d78f6e1d13bc41854082c03ab2f86462ebb09afda88ee6e9\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50611491806100206000396000f3fe608060405260043610610098576000357c010000000000000000000000000000000000000000000000000000000090048063938d71d01161006b578063938d71d0146101bb578063bef54a5e146101fa578063efa0ac4314610226578063f9bfaa7d1461025957610098565b80633092afd51461009a5780633398086a146100cd5780633ea053eb14610113578063645b8b1b14610146575b005b3480156100a657600080fd5b50610098600480360360208110156100bd57600080fd5b5035600160a060020a031661028c565b3480156100d957600080fd5b506100f7600480360360208110156100f057600080fd5b5035610508565b60408051600160a060020a039092168252519081900360200190f35b34801561011f57600080fd5b506100986004803603602081101561013657600080fd5b5035600160a060020a031661052f565b34801561015257600080fd5b506101796004803603602081101561016957600080fd5b5035600160a060020a031661063a565b604080519715158852600160a060020a039096166020880152931515868601529115156060860152608085015260a084015260c0830152519081900360e00190f35b3480156101c757600080fd5b50610098600480360360608110156101de57600080fd5b50600160a060020a0381351690602081013590604001356107dd565b6100986004803603604081101561021057600080fd5b50600160a060020a038135169060200135610a5d565b34801561023257600080fd5b506100986004803603602081101561024957600080fd5b5035600160a060020a0316611003565b34801561026557600080fd5b506100986004803603602081101561027c57600080fd5b5035600160a060020a0316611203565b600160a060020a0381166102d8576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a03818116600090815260208190526040902054610100900416331461034e576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6040805160e160020a6355138f0d02815230600482015290518291600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d60208110156103c457600080fd5b505161041a576040805160e560020a62461bcd02815260206004820152601e60248201527f4552523a2043616e6e6f7420616363657074206d696e74657220726f6c650000604482015290519081900360640190fd5b600160a060020a038281166000908152602081905260408082205481517f50d2fcc4000000000000000000000000000000000000000000000000000000008152610100909104841660048201529051928416926350d2fcc49260248084019391929182900301818387803b15801561049157600080fd5b505af11580156104a5573d6000803e3d6000fd5b50505050600160a060020a038216600081815260208190526040808220805475ff00000000000000000000000000000000000000000019169055517fc93cfdd5d8f442c448a02ed11ccff64355643272c9f2be94b723f2181af1a8969190a25050565b6001818154811061051557fe5b600091825260209091200154600160a060020a0316905081565b600160a060020a03811661057b576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0381811660009081526020819052604090205461010090041633146105f1576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b600160a060020a038116600081815260208190526040808220805460ff19169055517f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c009190a250565b6000808080808080600160a060020a03881661068e576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a038089166000818152602081815260409182902080546001820154600290920154845160e060020a6370a08231028152306004820152945160ff8084169f5061010084049098169d5075010000000000000000000000000000000000000000009092049096169a509097509395508b936370a08231926024808201939291829003018186803b15801561072757600080fd5b505afa15801561073b573d6000803e3d6000fd5b505050506040513d602081101561075157600080fd5b50516040805160e160020a6355138f0d0281523060048201529051919350600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b5051979996985094969592945090925090565b600160a060020a038316610829576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0383811660009081526020819052604090205461010090041615806108735750600160a060020a0383811660009081526020819052604090205461010090041633145b6108c7576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6040805160e160020a6355138f0d02815233600482015290518491600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d602081101561093d57600080fd5b505161097d5760405160e560020a62461bcd0281526004018080602001828103825260248152602001806114226024913960400191505060405180910390fd5b600160a060020a038416600081815260208190526040808220805460018083018990556002830188905560ff19909116811774ffffffffffffffffffffffffffffffffffffffff00191661010033021775ff0000000000000000000000000000000000000000001916909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff191684179055517f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf99190a250505050565b600160a060020a038216610aa9576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526020819052604090205460ff161515600114610b1e576040805160e560020a62461bcd02815260206004820152601460248201527f44697370656e736572206e6f7420616374697665000000000000000000000000604482015290519081900360640190fd5b60008111610b76576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964207a65726f20616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b600160a060020a038216600090815260208190526040902060010154811115610be9576040805160e560020a62461bcd02815260206004820152600f60248201527f416d6f756e7420746f6f20686967680000000000000000000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a0823102815233600482015290518391600091600160a060020a038416916370a08231916024808301926020929190829003018186803b158015610c3757600080fd5b505afa158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b5051600160a060020a0385166000908152602081905260409020600201549091508110610cd8576040805160e560020a62461bcd02815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523060048201529051600091600160a060020a038516916370a0823191602480820192602092909190829003018186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b505190508381108015610dd357506040805160e160020a6355138f0d0281523060048201529051600160a060020a0385169163aa271e1a916024808301926020929190829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b50515b15610ed057604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015282860360248201529051600160a060020a038516916340c10f1991604480830192600092919082900301818387803b158015610e4057600080fd5b505af1158015610e54573d6000803e3d6000fd5b50506040805160e060020a6370a082310281523060048201529051600160a060020a03871693506370a0823192506024808301926020929190829003018186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b505190505b83811015610f28576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f7420656e6f75676820726573657276657300000000000000000000000000604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a0385169163a9059cbb9160448083019260209291908290030181600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b50506040805185815290513391600160a060020a038816917f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135439181900360200190a35050505050565b600160a060020a03811661104f576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600081905080600160a060020a031663eb40024b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156110ab57600080fd5b505af11580156110bf573d6000803e3d6000fd5b50506040805160e160020a6355138f0d0281523060048201529051600160a060020a038516935063aa271e1a92506024808301926020929190829003018186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d602081101561113657600080fd5b505161118c576040805160e560020a62461bcd02815260206004820152601e60248201527f4552523a2043616e6e6f7420616363657074206d696e74657220726f6c650000604482015290519081900360640190fd5b600160a060020a038216600081815260208190526040808220805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055517ffef43e73eccfaf6e7c8c743baaa69fc51e375d972142bee1ffa6ee98f28339e99190a25050565b600160a060020a03811661124f576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0381811660009081526020819052604090205461010090041633146112c5576040805160e560020a62461bcd02815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a0823102815230600482015290518291600091600160a060020a038416916370a08231916024808301926020929190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50519050801561141c57604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156113af57600080fd5b505af11580156113c3573d6000803e3d6000fd5b505050506040513d60208110156113d957600080fd5b50506040805182815290513391600160a060020a038616917f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9181900360200190a35b50505056fe53656e64657220646f6573206e6f74206861766520746865206d696e74657220726f6c65496e76616c696420746f6b656e20636f6e747261637420616464726573730000a165627a7a72305820912566faae5bbd326f1ceefce2069e2d2206f629febcbb8ea833de618c7c9d2e0029", "deployedBytecode": "0x608060405260043610610098576000357c010000000000000000000000000000000000000000000000000000000090048063938d71d01161006b578063938d71d0146101bb578063bef54a5e146101fa578063efa0ac4314610226578063f9bfaa7d1461025957610098565b80633092afd51461009a5780633398086a146100cd5780633ea053eb14610113578063645b8b1b14610146575b005b3480156100a657600080fd5b50610098600480360360208110156100bd57600080fd5b5035600160a060020a031661028c565b3480156100d957600080fd5b506100f7600480360360208110156100f057600080fd5b5035610508565b60408051600160a060020a039092168252519081900360200190f35b34801561011f57600080fd5b506100986004803603602081101561013657600080fd5b5035600160a060020a031661052f565b34801561015257600080fd5b506101796004803603602081101561016957600080fd5b5035600160a060020a031661063a565b604080519715158852600160a060020a039096166020880152931515868601529115156060860152608085015260a084015260c0830152519081900360e00190f35b3480156101c757600080fd5b50610098600480360360608110156101de57600080fd5b50600160a060020a0381351690602081013590604001356107dd565b6100986004803603604081101561021057600080fd5b50600160a060020a038135169060200135610a5d565b34801561023257600080fd5b506100986004803603602081101561024957600080fd5b5035600160a060020a0316611003565b34801561026557600080fd5b506100986004803603602081101561027c57600080fd5b5035600160a060020a0316611203565b600160a060020a0381166102d8576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a03818116600090815260208190526040902054610100900416331461034e576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6040805160e160020a6355138f0d02815230600482015290518291600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b15801561039a57600080fd5b505afa1580156103ae573d6000803e3d6000fd5b505050506040513d60208110156103c457600080fd5b505161041a576040805160e560020a62461bcd02815260206004820152601e60248201527f4552523a2043616e6e6f7420616363657074206d696e74657220726f6c650000604482015290519081900360640190fd5b600160a060020a038281166000908152602081905260408082205481517f50d2fcc4000000000000000000000000000000000000000000000000000000008152610100909104841660048201529051928416926350d2fcc49260248084019391929182900301818387803b15801561049157600080fd5b505af11580156104a5573d6000803e3d6000fd5b50505050600160a060020a038216600081815260208190526040808220805475ff00000000000000000000000000000000000000000019169055517fc93cfdd5d8f442c448a02ed11ccff64355643272c9f2be94b723f2181af1a8969190a25050565b6001818154811061051557fe5b600091825260209091200154600160a060020a0316905081565b600160a060020a03811661057b576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0381811660009081526020819052604090205461010090041633146105f1576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b600160a060020a038116600081815260208190526040808220805460ff19169055517f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c009190a250565b6000808080808080600160a060020a03881661068e576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a038089166000818152602081815260409182902080546001820154600290920154845160e060020a6370a08231028152306004820152945160ff8084169f5061010084049098169d5075010000000000000000000000000000000000000000009092049096169a509097509395508b936370a08231926024808201939291829003018186803b15801561072757600080fd5b505afa15801561073b573d6000803e3d6000fd5b505050506040513d602081101561075157600080fd5b50516040805160e160020a6355138f0d0281523060048201529051919350600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b5051979996985094969592945090925090565b600160a060020a038316610829576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0383811660009081526020819052604090205461010090041615806108735750600160a060020a0383811660009081526020819052604090205461010090041633145b6108c7576040805160e560020a62461bcd02815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6040805160e160020a6355138f0d02815233600482015290518491600160a060020a0383169163aa271e1a91602480820192602092909190829003018186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d602081101561093d57600080fd5b505161097d5760405160e560020a62461bcd0281526004018080602001828103825260248152602001806114226024913960400191505060405180910390fd5b600160a060020a038416600081815260208190526040808220805460018083018990556002830188905560ff19909116811774ffffffffffffffffffffffffffffffffffffffff00191661010033021775ff0000000000000000000000000000000000000000001916909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff191684179055517f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf99190a250505050565b600160a060020a038216610aa9576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526020819052604090205460ff161515600114610b1e576040805160e560020a62461bcd02815260206004820152601460248201527f44697370656e736572206e6f7420616374697665000000000000000000000000604482015290519081900360640190fd5b60008111610b76576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c6964207a65726f20616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b600160a060020a038216600090815260208190526040902060010154811115610be9576040805160e560020a62461bcd02815260206004820152600f60248201527f416d6f756e7420746f6f20686967680000000000000000000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a0823102815233600482015290518391600091600160a060020a038416916370a08231916024808301926020929190829003018186803b158015610c3757600080fd5b505afa158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b5051600160a060020a0385166000908152602081905260409020600201549091508110610cd8576040805160e560020a62461bcd02815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523060048201529051600091600160a060020a038516916370a0823191602480820192602092909190829003018186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b505190508381108015610dd357506040805160e160020a6355138f0d0281523060048201529051600160a060020a0385169163aa271e1a916024808301926020929190829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b50515b15610ed057604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015282860360248201529051600160a060020a038516916340c10f1991604480830192600092919082900301818387803b158015610e4057600080fd5b505af1158015610e54573d6000803e3d6000fd5b50506040805160e060020a6370a082310281523060048201529051600160a060020a03871693506370a0823192506024808301926020929190829003018186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b505190505b83811015610f28576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f7420656e6f75676820726573657276657300000000000000000000000000604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a0385169163a9059cbb9160448083019260209291908290030181600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b50506040805185815290513391600160a060020a038816917f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135439181900360200190a35050505050565b600160a060020a03811661104f576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600081905080600160a060020a031663eb40024b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156110ab57600080fd5b505af11580156110bf573d6000803e3d6000fd5b50506040805160e160020a6355138f0d0281523060048201529051600160a060020a038516935063aa271e1a92506024808301926020929190829003018186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d602081101561113657600080fd5b505161118c576040805160e560020a62461bcd02815260206004820152601e60248201527f4552523a2043616e6e6f7420616363657074206d696e74657220726f6c650000604482015290519081900360640190fd5b600160a060020a038216600081815260208190526040808220805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055517ffef43e73eccfaf6e7c8c743baaa69fc51e375d972142bee1ffa6ee98f28339e99190a25050565b600160a060020a03811661124f576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020611446833981519152604482015290519081900360640190fd5b600160a060020a0381811660009081526020819052604090205461010090041633146112c5576040805160e560020a62461bcd02815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160e060020a6370a0823102815230600482015290518291600091600160a060020a038416916370a08231916024808301926020929190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50519050801561141c57604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156113af57600080fd5b505af11580156113c3573d6000803e3d6000fd5b505050506040513d60208110156113d957600080fd5b50506040805182815290513391600160a060020a038616917f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9181900360200190a35b50505056fe53656e64657220646f6573206e6f74206861766520746865206d696e74657220726f6c65496e76616c696420746f6b656e20636f6e747261637420616464726573730000a165627a7a72305820912566faae5bbd326f1ceefce2069e2d2206f629febcbb8ea833de618c7c9d2e0029", "sourceMap": "231:8452:9:-;;;741:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;741:23:9;231:8452;;;;;;", "deployedSourceMap": "231:8452:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5593:640;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5593:640:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5593:640:9;-1:-1:-1;;;;;5593:640:9;;:::i;704:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;704:31:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;704:31:9;;:::i;:::-;;;;-1:-1:-1;;;;;704:31:9;;;;;;;;;;;;;;4293:372;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4293:372:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4293:372:9;-1:-1:-1;;;;;4293:372:9;;:::i;2255:756::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2255:756:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2255:756:9;-1:-1:-1;;;;;2255:756:9;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2255:756:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:904;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3246:904:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3246:904:9;;;;;;;;;;;;;:::i;6544:1304::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6544:1304:9;;;;;;;;:::i;4886:488::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4886:488:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4886:488:9;-1:-1:-1;;;;;4886:488:9;;:::i;8026:577::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8026:577:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8026:577:9;-1:-1:-1;;;;;8026:577:9;;:::i;5593:640::-;-1:-1:-1;;;;;5673:23:9;;5652:100;;;;;-1:-1:-1;;;;;5652:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5652:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;5783:21:9;;;:10;:21;;;;;;;;;;:27;;;;;5814:10;5783:41;5762:115;;;;;-1:-1:-1;;;;;5762:115:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:37;;;-1:-1:-1;;;;;5974:37:9;;6005:4;5974:37;;;;;;5933:9;;-1:-1:-1;;;;;5974:22:9;;;;;:37;;;;;;;;;;;;;;;:22;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;5974:37:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5974:37:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5974:37:9;5953:114;;;;;-1:-1:-1;;;;;5953:114:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6105:21:9;;;:10;:21;;;;;;;;;;;:27;6077:56;;;;;6105:27;;;;;;6077:56;;;;;;:27;;;;;;:56;;;;;6105:10;;6077:56;;;;;;6105:10;6077:27;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;6077:56:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;6143:21:9;;6182:5;6143:21;;;;;;;;;;;:44;;-1:-1:-1;;6143:44:9;;;6202:24;;;6182:5;6202:24;5593:640;;:::o;704:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;704:31:9;;-1:-1:-1;704:31:9;:::o;4293:372::-;-1:-1:-1;;;;;4371:23:9;;4350:100;;;;;-1:-1:-1;;;;;4350:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4350:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;4481:21:9;;;:10;:21;;;;;;;;;;:27;;;;;4512:10;4481:41;4460:115;;;;;-1:-1:-1;;;;;4460:115:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4585:21:9;;4616:5;4585:21;;;;;;;;;;;:36;;-1:-1:-1;;4585:36:9;;;4636:22;;;4616:5;4636:22;4293:372;:::o;2255:756::-;2322:11;;;;;;;-1:-1:-1;;;;;2476:23:9;;2455:100;;;;;-1:-1:-1;;;;;2455:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2455:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;2574:21:9;;;:10;:21;;;;;;;;;;;;:28;;;2732:31;;;2786:32;;;;;2904:38;;-1:-1:-1;;;;;2904:38:9;;2936:4;2904:38;;;;;;2574:28;;;;;-1:-1:-1;2574:28:9;2620:27;;;;;;-1:-1:-1;2674:36:9;;;;;;;;-1:-1:-1;2732:31:9;;-1:-1:-1;2786:32:9;;-1:-1:-1;2585:9:9;;2904:23;;:38;;;;;2574:21;2904:38;;;;;;2574:21;2904:38;;;5:2:-1;;;;30:1;27;20:12;5:2;2904:38:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2904:38:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2904:38:9;2967:37;;;-1:-1:-1;;;;;2967:37:9;;2998:4;2967:37;;;;;;2904:38;;-1:-1:-1;;;;;;2967:22:9;;;;;:37;;;;;2904:38;;2967:37;;;;;;;;:22;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;2967:37:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2967:37:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2967:37:9;2255:756;;;;-1:-1:-1;2255:756:9;;2967:37;2255:756;;-1:-1:-1;2255:756:9;;-1:-1:-1;2255:756:9;:::o;3246:904::-;-1:-1:-1;;;;;3369:23:9;;3348:100;;;;;-1:-1:-1;;;;;3348:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3348:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;3479:21:9;;;3518:1;3479:21;;;;;;;;;;:27;;;;;:41;;:86;;-1:-1:-1;;;;;;3524:21:9;;;:10;:21;;;;;;;;;;:27;;;;;3555:10;3524:41;3479:86;3458:160;;;;;-1:-1:-1;;;;;3458:160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3715:34;;;-1:-1:-1;;;;;3715:34:9;;3738:10;3715:34;;;;;;3674:9;;-1:-1:-1;;;;;3715:22:9;;;;;:34;;;;;;;;;;;;;;;:22;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;3715:34:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3715:34:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3715:34:9;3694:117;;;;-1:-1:-1;;;;;3694:117:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3821:21:9;;:10;:21;;;;;;;;;;;:35;;3852:4;3916:31;;;:43;;;3969:32;;;:45;;;-1:-1:-1;;3821:35:9;;;;;-1:-1:-1;;3866:40:9;3821:35;3896:10;3866:40;;-1:-1:-1;;4024:44:9;;;;27:10:-1;;23:18;;;45:23;;4078:30:9;;;;;;;-1:-1:-1;;4078:30:9;;;;;4123:20;;;3821:10;4123:20;3246:904;;;;:::o;6544:1304::-;-1:-1:-1;;;;;6644:23:9;;6623:100;;;;;-1:-1:-1;;;;;6623:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6623:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;6754:21:9;;:10;:21;;;;;;;;;;:28;;;:36;;:28;:36;6733:103;;;;;-1:-1:-1;;;;;6733:103:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;6876:1;6867:6;:10;6846:76;;;;;-1:-1:-1;;;;;6846:76:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6953:21:9;;:10;:21;;;;;;;;;;:31;;;:41;-1:-1:-1;6953:41:9;6932:103;;;;;-1:-1:-1;;;;;6932:103:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7135:35;;;-1:-1:-1;;;;;7135:35:9;;7159:10;7135:35;;;;;;7091:9;;7045:28;;-1:-1:-1;;;;;7135:23:9;;;;;:35;;;;;;;;;;;;;;:23;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;7135:35:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7135:35:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7135:35:9;-1:-1:-1;;;;;7215:21:9;;:10;:21;;;7135:35;7215:21;;;;;;:32;;;7135:35;;-1:-1:-1;7201:46:9;;7180:116;;;;;-1:-1:-1;;;;;7180:116:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7327:38;;;-1:-1:-1;;;;;7327:38:9;;7359:4;7327:38;;;;;;7306:18;;-1:-1:-1;;;;;7327:23:9;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;7327:38:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7327:38:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7327:38:9;;-1:-1:-1;7378:17:9;;;:58;;;;-1:-1:-1;7399:37:9;;;-1:-1:-1;;;;;7399:37:9;;7430:4;7399:37;;;;;;-1:-1:-1;;;;;7399:22:9;;;;;:37;;;;;;;;;;;;;;:22;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;7399:37:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7399:37:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7399:37:9;7378:58;7375:261;;;7507:53;;;;;;7534:4;7507:53;;;;7540:19;;;7507:53;;;;;;-1:-1:-1;;;;;7507:18:9;;;;;:53;;;;;-1:-1:-1;;7507:53:9;;;;;;;-1:-1:-1;7507:18:9;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;7507:53:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7587:38:9;;;-1:-1:-1;;;;;7587:38:9;;7619:4;7587:38;;;;;;-1:-1:-1;;;;;7587:23:9;;;-1:-1:-1;7587:23:9;;-1:-1:-1;7587:38:9;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;7587:38:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7587:38:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7587:38:9;;-1:-1:-1;7375:261:9;7678:6;7666:10;:18;;7645:84;;;;;-1:-1:-1;;;;;7645:84:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:41;;;;;;7762:10;7739:41;;;;;;;;;;;;-1:-1:-1;;;;;7739:22:9;;;;;:41;;;;;;;;;;;;;;-1:-1:-1;7739:22:9;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;7739:41:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7739:41:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;7795:46:9;;;;;;;;7822:10;;-1:-1:-1;;;;;7795:46:9;;;;;;;;7739:41;7795:46;;;6544:1304;;;;;:::o;4886:488::-;-1:-1:-1;;;;;4966:23:9;;4945:100;;;;;-1:-1:-1;;;;;4945:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4945:100:9;;;;;;;;;;;;;;;5055:28;5101:9;5055:56;;5121:13;-1:-1:-1;;;;;5121:27:9;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5121:29:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5181:37:9;;;-1:-1:-1;;;;;5181:37:9;;5212:4;5181:37;;;;;;-1:-1:-1;;;;;5181:22:9;;;-1:-1:-1;5181:22:9;;-1:-1:-1;5181:37:9;;;;;;;;;;;;;;:22;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;5181:37:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5181:37:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5181:37:9;5160:114;;;;;-1:-1:-1;;;;;5160:114:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5284:21:9;;:10;:21;;;;;;;;;;;:43;;-1:-1:-1;;5284:43:9;;;;;5342:25;;;5284:10;5342:25;4886:488;;:::o;8026:577::-;-1:-1:-1;;;;;8107:23:9;;8086:100;;;;;-1:-1:-1;;;;;8086:100:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8086:100:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;8217:21:9;;;:10;:21;;;;;;;;;;:27;;;;;8248:10;8217:41;8196:101;;;;;-1:-1:-1;;;;;8196:101:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8394:38;;;-1:-1:-1;;;;;8394:38:9;;8426:4;8394:38;;;;;;8353:9;;8307:28;;-1:-1:-1;;;;;8394:23:9;;;;;:38;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;8394:38:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8394:38:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8394:38:9;;-1:-1:-1;8445:12:9;;8442:155;;8472:45;;;;;;8495:10;8472:45;;;;;;;;;;;;-1:-1:-1;;;;;8472:22:9;;;;;:45;;;;;;;;;;;;;;-1:-1:-1;8472:22:9;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;8472:45:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8472:45:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8536:50:9;;;;;;;;8563:10;;-1:-1:-1;;;;;8536:50:9;;;;;;;;8472:45;8536:50;;;8442:155;8026:577;;;:::o", "source": "pragma solidity 0.5.7;\n// Copyright BigchainDB GmbH and Ocean Protocol contributors\n// SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)\n// Code is Apache-2.0 and docs are CC-BY-4.0\n\nimport '../interfaces/IERC20Template.sol';\n\n\n\ncontract Dispenser {\n struct DataToken {\n bool active; // if the dispenser is active for this datatoken\n address owner; // owner of this dispenser\n bool minterApproved; // if the dispenser is a minter for this datatoken\n uint256 maxTokens; // max tokens to dispense\n uint256 maxBalance; // max balance of requester. \n //If the balance is higher, the dispense is rejected\n }\n mapping(address => DataToken) datatokens;\n address[] public datatokensList;\n constructor() public {}\n \n event Activated( // emited when a dispenser is activated\n address indexed datatokenAddress\n );\n\n event Deactivated( // emited when a dispenser is deactivated\n address indexed datatokenAddress\n );\n\n event AcceptedMinter( \n // emited when a dispenser becomes minter of the datatoken\n address indexed datatokenAddress\n );\n\n event RemovedMinter( \n // emited when a dispenser if removed as minter of the datatoken\n address indexed datatokenAddress\n );\n\n event TokensDispensed( \n // emited when tokens are dispended\n address indexed datatokenAddress,\n address indexed userAddress,\n uint256 amount\n );\n\n event OwnerWithdrawed(\n address indexed datatoken,\n address indexed owner,\n uint256 amount\n );\n\n /**\n * @dev status\n * Get information about a datatoken dispenser\n * @param datatoken refers to datatoken address.\n * @return active - if the dispenser is active for this datatoken\n * @return owner - owner of this dispenser\n * @return minterApproved - if the dispenser is a minter for this datatoken\n * @return isTrueMinter - check the datatoken contract if this contract is really a minter\n * @return maxTokens - max tokens to dispense\n * @return maxBalance - max balance of requester. If the balance is higher, the dispense is rejected\n * @return balance - internal balance of the contract (if any)\n */\n function status(address datatoken) \n external view \n returns(bool active,address owner,bool minterApproved,\n bool isTrueMinter,uint256 maxTokens,uint256 maxBalance, uint256 balance){\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n active = datatokens[datatoken].active;\n owner = datatokens[datatoken].owner;\n minterApproved = datatokens[datatoken].minterApproved;\n maxTokens = datatokens[datatoken].maxTokens;\n maxBalance = datatokens[datatoken].maxBalance;\n IERC20Template tokenInstance = IERC20Template(datatoken);\n balance = tokenInstance.balanceOf(address(this));\n isTrueMinter = tokenInstance.isMinter(address(this));\n }\n\n /**\n * @dev activate\n * Activate a new dispenser\n * @param datatoken refers to datatoken address.\n * @param maxTokens - max tokens to dispense\n * @param maxBalance - max balance of requester.\n */\n function activate(address datatoken,uint256 maxTokens, uint256 maxBalance)\n external {\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n require(\n datatokens[datatoken].owner == address(0) || datatokens[datatoken].owner == msg.sender,\n 'DataToken already activated'\n );\n IERC20Template tokenInstance = IERC20Template(datatoken);\n require(\n tokenInstance.isMinter(msg.sender),\n 'Sender does not have the minter role'\n );\n datatokens[datatoken].active = true;\n datatokens[datatoken].owner = msg.sender;\n datatokens[datatoken].maxTokens = maxTokens;\n datatokens[datatoken].maxBalance = maxBalance;\n datatokens[datatoken].minterApproved = false;\n datatokensList.push(datatoken);\n emit Activated(datatoken);\n }\n\n /**\n * @dev deactivate\n * Deactivate an existing dispenser\n * @param datatoken refers to datatoken address.\n */\n function deactivate(address datatoken) external{\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n require(\n datatokens[datatoken].owner == msg.sender,\n 'DataToken already activated'\n );\n datatokens[datatoken].active = false;\n emit Deactivated(datatoken);\n }\n\n /**\n * @dev acceptMinter\n * Accepts Minter role (existing datatoken minter has to call datatoken.proposeMinter(dispenserAddress) first)\n * @param datatoken refers to datatoken address.\n */\n function acceptMinter(address datatoken) external{\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n IERC20Template tokenInstance = IERC20Template(datatoken);\n tokenInstance.approveMinter();\n require(\n tokenInstance.isMinter(address(this)),\n 'ERR: Cannot accept minter role'\n );\n datatokens[datatoken].minterApproved = true;\n emit AcceptedMinter(datatoken);\n }\n /**\n * @dev removeMinter\n * Removes Minter role and proposes the owner as a new minter (the owner has to call approveMinter after this)\n * @param datatoken refers to datatoken address.\n */\n function removeMinter(address datatoken) external{\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n require(\n datatokens[datatoken].owner == msg.sender,\n 'DataToken already activated'\n );\n IERC20Template tokenInstance = IERC20Template(datatoken);\n require(\n tokenInstance.isMinter(address(this)),\n 'ERR: Cannot accept minter role'\n );\n tokenInstance.proposeMinter(datatokens[datatoken].owner);\n datatokens[datatoken].minterApproved = false;\n emit RemovedMinter(datatoken);\n }\n\n /**\n * @dev dispense\n * Dispense datatokens to caller. The dispenser must be active, hold enough DT (or be able to mint more) and respect maxTokens/maxBalance requirements\n * @param datatoken refers to datatoken address.\n * @param datatoken amount of datatokens required.\n */\n function dispense(address datatoken, uint256 amount) external payable{\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n require(\n datatokens[datatoken].active == true,\n 'Dispenser not active'\n );\n require(\n amount > 0,\n 'Invalid zero amount'\n );\n require(\n datatokens[datatoken].maxTokens >= amount,\n 'Amount too high'\n );\n IERC20Template tokenInstance = IERC20Template(datatoken);\n uint256 callerBalance = tokenInstance.balanceOf(msg.sender);\n require(\n callerBalance=amount,\n 'Not enough reserves'\n );\n tokenInstance.transfer(msg.sender,amount);\n emit TokensDispensed(datatoken, msg.sender, amount);\n }\n\n /**\n * @dev ownerWithdraw\n * Allow owner to withdraw all datatokens in this dispenser balance\n * @param datatoken refers to datatoken address.\n */\n function ownerWithdraw(address datatoken) external{\n require(\n datatoken != address(0),\n 'Invalid token contract address'\n );\n require(\n datatokens[datatoken].owner == msg.sender,\n 'Invalid owner'\n );\n IERC20Template tokenInstance = IERC20Template(datatoken);\n uint256 ourBalance = tokenInstance.balanceOf(address(this));\n if(ourBalance>0){\n tokenInstance.transfer(msg.sender,ourBalance);\n emit OwnerWithdrawed(datatoken, msg.sender, ourBalance);\n }\n }\n function() external payable {\n //thank you for your donation\n }\n}", "sourcePath": "/Users/ahmedali/Desktop/work/ocean/contracts/contracts/dispenser/Dispenser.sol", "ast": { "absolutePath": "/Users/ahmedali/Desktop/work/ocean/contracts/contracts/dispenser/Dispenser.sol", "exportedSymbols": { "Dispenser": [ 4986 ] }, "id": 4987, "nodeType": "SourceUnit", "nodes": [ { "id": 4400, "literals": [ "solidity", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "0:22:9" }, { "absolutePath": "/Users/ahmedali/Desktop/work/ocean/contracts/contracts/interfaces/IERC20Template.sol", "file": "../interfaces/IERC20Template.sol", "id": 4401, "nodeType": "ImportDirective", "scope": 4987, "sourceUnit": 5659, "src": "185:42:9", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 4986, "linearizedBaseContracts": [ 4986 ], "name": "Dispenser", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Dispenser.DataToken", "id": 4412, "members": [ { "constant": false, "id": 4403, "name": "active", "nodeType": "VariableDeclaration", "scope": 4412, "src": "283:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4402, "name": "bool", "nodeType": "ElementaryTypeName", "src": "283:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4405, "name": "owner", "nodeType": "VariableDeclaration", "scope": 4412, "src": "354:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4404, "name": "address", "nodeType": "ElementaryTypeName", "src": "354:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4407, "name": "minterApproved", "nodeType": "VariableDeclaration", "scope": 4412, "src": "404:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4406, "name": "bool", "nodeType": "ElementaryTypeName", "src": "404:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4409, "name": "maxTokens", "nodeType": "VariableDeclaration", "scope": 4412, "src": "484:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4408, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "484:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4411, "name": "maxBalance", "nodeType": "VariableDeclaration", "scope": 4412, "src": "537:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "537:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "DataToken", "nodeType": "StructDefinition", "scope": 4986, "src": "256:397:9", "visibility": "public" }, { "constant": false, "id": 4416, "name": "datatokens", "nodeType": "VariableDeclaration", "scope": 4986, "src": "658:40:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken)" }, "typeName": { "id": 4415, "keyType": { "id": 4413, "name": "address", "nodeType": "ElementaryTypeName", "src": "666:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "658:29:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken)" }, "valueType": { "contractScope": null, "id": 4414, "name": "DataToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4412, "src": "677:9:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage_ptr", "typeString": "struct Dispenser.DataToken" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4419, "name": "datatokensList", "nodeType": "VariableDeclaration", "scope": 4986, "src": "704:31:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[]" }, "typeName": { "baseType": { "id": 4417, "name": "address", "nodeType": "ElementaryTypeName", "src": "704:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 4418, "length": null, "nodeType": "ArrayTypeName", "src": "704:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "public" }, { "body": { "id": 4422, "nodeType": "Block", "src": "762:2:9", "statements": [] }, "documentation": null, "id": 4423, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 4420, "nodeType": "ParameterList", "parameters": [], "src": "752:2:9" }, "returnParameters": { "id": 4421, "nodeType": "ParameterList", "parameters": [], "src": "762:0:9" }, "scope": 4986, "src": "741:23:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 4427, "name": "Activated", "nodeType": "EventDefinition", "parameters": { "id": 4426, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4425, "indexed": true, "name": "datatokenAddress", "nodeType": "VariableDeclaration", "scope": 4427, "src": "840:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4424, "name": "address", "nodeType": "ElementaryTypeName", "src": "840:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "789:89:9" }, "src": "774:105:9" }, { "anonymous": false, "documentation": null, "id": 4431, "name": "Deactivated", "nodeType": "EventDefinition", "parameters": { "id": 4430, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4429, "indexed": true, "name": "datatokenAddress", "nodeType": "VariableDeclaration", "scope": 4431, "src": "954:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4428, "name": "address", "nodeType": "ElementaryTypeName", "src": "954:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "902:90:9" }, "src": "885:108:9" }, { "anonymous": false, "documentation": null, "id": 4435, "name": "AcceptedMinter", "nodeType": "EventDefinition", "parameters": { "id": 4434, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4433, "indexed": true, "name": "datatokenAddress", "nodeType": "VariableDeclaration", "scope": 4435, "src": "1097:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4432, "name": "address", "nodeType": "ElementaryTypeName", "src": "1097:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1019:116:9" }, "src": "999:137:9" }, { "anonymous": false, "documentation": null, "id": 4439, "name": "RemovedMinter", "nodeType": "EventDefinition", "parameters": { "id": 4438, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4437, "indexed": true, "name": "datatokenAddress", "nodeType": "VariableDeclaration", "scope": 4439, "src": "1245:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4436, "name": "address", "nodeType": "ElementaryTypeName", "src": "1245:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1161:122:9" }, "src": "1142:142:9" }, { "anonymous": false, "documentation": null, "id": 4447, "name": "TokensDispensed", "nodeType": "EventDefinition", "parameters": { "id": 4446, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4441, "indexed": true, "name": "datatokenAddress", "nodeType": "VariableDeclaration", "scope": 4447, "src": "1366:32:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4440, "name": "address", "nodeType": "ElementaryTypeName", "src": "1366:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4443, "indexed": true, "name": "userAddress", "nodeType": "VariableDeclaration", "scope": 4447, "src": "1408:27:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4442, "name": "address", "nodeType": "ElementaryTypeName", "src": "1408:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4445, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 4447, "src": "1445:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4444, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1445:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1311:154:9" }, "src": "1290:176:9" }, { "anonymous": false, "documentation": null, "id": 4455, "name": "OwnerWithdrawed", "nodeType": "EventDefinition", "parameters": { "id": 4454, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4449, "indexed": true, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4455, "src": "1503:25:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4448, "name": "address", "nodeType": "ElementaryTypeName", "src": "1503:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4451, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", "scope": 4455, "src": "1538:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4450, "name": "address", "nodeType": "ElementaryTypeName", "src": "1538:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4453, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 4455, "src": "1569:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4452, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1569:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1493:96:9" }, "src": "1472:118:9" }, { "body": { "id": 4542, "nodeType": "Block", "src": "2445:566:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4475, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2476:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2497:1:9", "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": 4476, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2489:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2489:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2476:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2513:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4474, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "2455:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2455:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4482, "nodeType": "ExpressionStatement", "src": "2455:100:9" }, { "expression": { "argumentTypes": null, "id": 4488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4483, "name": "active", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4460, "src": "2565:6:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4484, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "2574:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4486, "indexExpression": { "argumentTypes": null, "id": 4485, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2585:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2574:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 4403, "src": "2574:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2565:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4489, "nodeType": "ExpressionStatement", "src": "2565:37:9" }, { "expression": { "argumentTypes": null, "id": 4495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4490, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4462, "src": "2612:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4491, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "2620:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4493, "indexExpression": { "argumentTypes": null, "id": 4492, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2631:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2620:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4494, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "2620:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2612:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 4496, "nodeType": "ExpressionStatement", "src": "2612:35:9" }, { "expression": { "argumentTypes": null, "id": 4502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4497, "name": "minterApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4464, "src": "2657:14:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4498, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "2674:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4500, "indexExpression": { "argumentTypes": null, "id": 4499, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2685:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2674:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "minterApproved", "nodeType": "MemberAccess", "referencedDeclaration": 4407, "src": "2674:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2657:53:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4503, "nodeType": "ExpressionStatement", "src": "2657:53:9" }, { "expression": { "argumentTypes": null, "id": 4509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4504, "name": "maxTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4468, "src": "2720:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4505, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "2732:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4507, "indexExpression": { "argumentTypes": null, "id": 4506, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2743:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2732:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "maxTokens", "nodeType": "MemberAccess", "referencedDeclaration": 4409, "src": "2732:31:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2720:43:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4510, "nodeType": "ExpressionStatement", "src": "2720:43:9" }, { "expression": { "argumentTypes": null, "id": 4516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4511, "name": "maxBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4470, "src": "2773:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4512, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "2786:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4514, "indexExpression": { "argumentTypes": null, "id": 4513, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2797:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2786:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4515, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "maxBalance", "nodeType": "MemberAccess", "referencedDeclaration": 4411, "src": "2786:32:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2773:45:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4517, "nodeType": "ExpressionStatement", "src": "2773:45:9" }, { "assignments": [ 4519 ], "declarations": [ { "constant": false, "id": 4519, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4542, "src": "2828:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4518, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "2828:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4523, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4521, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4457, "src": "2874:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4520, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "2859:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2859:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "2828:56:9" }, { "expression": { "argumentTypes": null, "id": 4531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4524, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4472, "src": "2894:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4528, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "2936:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4527, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2928:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4529, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2928:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4525, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4519, "src": "2904:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 5640, "src": "2904:23:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 4530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2904:38:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2894:48:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4532, "nodeType": "ExpressionStatement", "src": "2894:48:9" }, { "expression": { "argumentTypes": null, "id": 4540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4533, "name": "isTrueMinter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4466, "src": "2952:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4537, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "2998:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4536, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2990:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4538, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2990:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4534, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4519, "src": "2967:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5608, "src": "2967:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 4539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2967:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2952:52:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4541, "nodeType": "ExpressionStatement", "src": "2952:52:9" } ] }, "documentation": "@dev status\n Get information about a datatoken dispenser\n@param datatoken refers to datatoken address.\n@return active - if the dispenser is active for this datatoken\n@return owner - owner of this dispenser\n@return minterApproved - if the dispenser is a minter for this datatoken\n@return isTrueMinter - check the datatoken contract if this contract is really a minter\n@return maxTokens - max tokens to dispense\n@return maxBalance - max balance of requester. If the balance is higher, the dispense is rejected\n@return balance - internal balance of the contract (if any)", "id": 4543, "implemented": true, "kind": "function", "modifiers": [], "name": "status", "nodeType": "FunctionDefinition", "parameters": { "id": 4458, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4457, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2271:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4456, "name": "address", "nodeType": "ElementaryTypeName", "src": "2271:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2270:19:9" }, "returnParameters": { "id": 4473, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4460, "name": "active", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2322:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4459, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2322:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4462, "name": "owner", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2334:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4461, "name": "address", "nodeType": "ElementaryTypeName", "src": "2334:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4464, "name": "minterApproved", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2348:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4463, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2348:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4466, "name": "isTrueMinter", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2373:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4465, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2373:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4468, "name": "maxTokens", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2391:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4467, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2391:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4470, "name": "maxBalance", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2409:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2409:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4472, "name": "balance", "nodeType": "VariableDeclaration", "scope": 4543, "src": "2429:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4471, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2429:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2321:124:9" }, "scope": 4986, "src": "2255:756:9", "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": { "id": 4642, "nodeType": "Block", "src": "3338:812:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4553, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3369:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4555, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3390:1:9", "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": 4554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3382:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3382:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3369:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3406:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "3348:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3348:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4560, "nodeType": "ExpressionStatement", "src": "3348:100:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 4577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4562, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3479:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4564, "indexExpression": { "argumentTypes": null, "id": 4563, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3490:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3479:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4565, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "3479:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3518:1:9", "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": 4566, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3510:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4568, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3510:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3479:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4570, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3524:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4572, "indexExpression": { "argumentTypes": null, "id": 4571, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3535:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3524:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4573, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "3524:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4574, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "3555:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3555:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3524:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3479:86:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "44617461546f6b656e20616c726561647920616374697661746564", "id": 4578, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3579:29:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" }, "value": "DataToken already activated" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "id": 4561, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "3458:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3458:160:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4580, "nodeType": "ExpressionStatement", "src": "3458:160:9" }, { "assignments": [ 4582 ], "declarations": [ { "constant": false, "id": 4582, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4642, "src": "3628:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4581, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "3628:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4586, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4584, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3674:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4583, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "3659:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3659:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "3628:56:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4590, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "3738:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3738:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4588, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4582, "src": "3715:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5608, "src": "3715:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 4592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3715:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "53656e64657220646f6573206e6f74206861766520746865206d696e74657220726f6c65", "id": 4593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3763:38:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b9ee47ffa5d7be08bbcf8e567aa23ba3d67c2f7b7ccc9551956c2443209e5c72", "typeString": "literal_string \"Sender does not have the minter role\"" }, "value": "Sender does not have the minter role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9ee47ffa5d7be08bbcf8e567aa23ba3d67c2f7b7ccc9551956c2443209e5c72", "typeString": "literal_string \"Sender does not have the minter role\"" } ], "id": 4587, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "3694:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3694:117:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4595, "nodeType": "ExpressionStatement", "src": "3694:117:9" }, { "expression": { "argumentTypes": null, "id": 4601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4596, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3821:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4598, "indexExpression": { "argumentTypes": null, "id": 4597, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3832:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3821:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 4403, "src": "3821:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 4600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3852:4:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "3821:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4602, "nodeType": "ExpressionStatement", "src": "3821:35:9" }, { "expression": { "argumentTypes": null, "id": 4609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4603, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3866:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4605, "indexExpression": { "argumentTypes": null, "id": 4604, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3877:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3866:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "3866:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4607, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "3896:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3896:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3866:40:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 4610, "nodeType": "ExpressionStatement", "src": "3866:40:9" }, { "expression": { "argumentTypes": null, "id": 4616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4611, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3916:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4613, "indexExpression": { "argumentTypes": null, "id": 4612, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3927:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3916:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4614, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "maxTokens", "nodeType": "MemberAccess", "referencedDeclaration": 4409, "src": "3916:31:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 4615, "name": "maxTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4547, "src": "3950:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3916:43:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4617, "nodeType": "ExpressionStatement", "src": "3916:43:9" }, { "expression": { "argumentTypes": null, "id": 4623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4618, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "3969:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4620, "indexExpression": { "argumentTypes": null, "id": 4619, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "3980:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3969:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4621, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "maxBalance", "nodeType": "MemberAccess", "referencedDeclaration": 4411, "src": "3969:32:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 4622, "name": "maxBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4549, "src": "4004:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3969:45:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4624, "nodeType": "ExpressionStatement", "src": "3969:45:9" }, { "expression": { "argumentTypes": null, "id": 4630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4625, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "4024:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4627, "indexExpression": { "argumentTypes": null, "id": 4626, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "4035:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4024:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4628, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "minterApproved", "nodeType": "MemberAccess", "referencedDeclaration": 4407, "src": "4024:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 4629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4063:5:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "4024:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4631, "nodeType": "ExpressionStatement", "src": "4024:44:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4635, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "4098:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 4632, "name": "datatokensList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4419, "src": "4078:14:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 4634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4078:19:9", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, "id": 4636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4078:30:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4637, "nodeType": "ExpressionStatement", "src": "4078:30:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4639, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4545, "src": "4133:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4638, "name": "Activated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4427, "src": "4123:9:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 4640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4123:20:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4641, "nodeType": "EmitStatement", "src": "4118:25:9" } ] }, "documentation": "@dev activate\n Activate a new dispenser\n@param datatoken refers to datatoken address.\n@param maxTokens - max tokens to dispense\n@param maxBalance - max balance of requester.", "id": 4643, "implemented": true, "kind": "function", "modifiers": [], "name": "activate", "nodeType": "FunctionDefinition", "parameters": { "id": 4550, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4545, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4643, "src": "3264:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4544, "name": "address", "nodeType": "ElementaryTypeName", "src": "3264:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4547, "name": "maxTokens", "nodeType": "VariableDeclaration", "scope": 4643, "src": "3282:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3282:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4549, "name": "maxBalance", "nodeType": "VariableDeclaration", "scope": 4643, "src": "3301:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3301:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3263:57:9" }, "returnParameters": { "id": 4551, "nodeType": "ParameterList", "parameters": [], "src": "3338:0:9" }, "scope": 4986, "src": "3246:904:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4679, "nodeType": "Block", "src": "4340:325:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4649, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4645, "src": "4371:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4392:1:9", "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": 4650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4384:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4652, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4384:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4371:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4408:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4648, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "4350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4655, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4350:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4656, "nodeType": "ExpressionStatement", "src": "4350:100:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4658, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "4481:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4660, "indexExpression": { "argumentTypes": null, "id": 4659, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4645, "src": "4492:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4481:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "4481:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4662, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "4512:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4512:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4481:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "44617461546f6b656e20616c726561647920616374697661746564", "id": 4665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4536:29:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" }, "value": "DataToken already activated" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "id": 4657, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "4460:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4460:115:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4667, "nodeType": "ExpressionStatement", "src": "4460:115:9" }, { "expression": { "argumentTypes": null, "id": 4673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4668, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "4585:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4670, "indexExpression": { "argumentTypes": null, "id": 4669, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4645, "src": "4596:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4585:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 4403, "src": "4585:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 4672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4616:5:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "4585:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4674, "nodeType": "ExpressionStatement", "src": "4585:36:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4676, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4645, "src": "4648:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4675, "name": "Deactivated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4431, "src": "4636:11:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 4677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4636:22:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4678, "nodeType": "EmitStatement", "src": "4631:27:9" } ] }, "documentation": "@dev deactivate\n Deactivate an existing dispenser\n@param datatoken refers to datatoken address.", "id": 4680, "implemented": true, "kind": "function", "modifiers": [], "name": "deactivate", "nodeType": "FunctionDefinition", "parameters": { "id": 4646, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4645, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4680, "src": "4313:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4644, "name": "address", "nodeType": "ElementaryTypeName", "src": "4313:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4312:19:9" }, "returnParameters": { "id": 4647, "nodeType": "ParameterList", "parameters": [], "src": "4340:0:9" }, "scope": 4986, "src": "4293:372:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4726, "nodeType": "Block", "src": "4935:439:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4686, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4682, "src": "4966:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4688, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4987:1:9", "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": 4687, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4979:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4979:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4966:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5003:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4685, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "4945:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4945:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4693, "nodeType": "ExpressionStatement", "src": "4945:100:9" }, { "assignments": [ 4695 ], "declarations": [ { "constant": false, "id": 4695, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4726, "src": "5055:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4694, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "5055:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4699, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4697, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4682, "src": "5101:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4696, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "5086:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5086:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "5055:56:9" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 4700, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4695, "src": "5121:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approveMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5657, "src": "5121:27:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, "id": 4703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5121:29:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4704, "nodeType": "ExpressionStatement", "src": "5121:29:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4709, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "5212:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4708, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5204:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5204:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4706, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4695, "src": "5181:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5608, "src": "5181:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 4711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5181:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552523a2043616e6e6f7420616363657074206d696e74657220726f6c65", "id": 4712, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5232:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" }, "value": "ERR: Cannot accept minter role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" } ], "id": 4705, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "5160:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5160:114:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4714, "nodeType": "ExpressionStatement", "src": "5160:114:9" }, { "expression": { "argumentTypes": null, "id": 4720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4715, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "5284:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4717, "indexExpression": { "argumentTypes": null, "id": 4716, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4682, "src": "5295:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5284:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4718, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "minterApproved", "nodeType": "MemberAccess", "referencedDeclaration": 4407, "src": "5284:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 4719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5323:4:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "5284:43:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4721, "nodeType": "ExpressionStatement", "src": "5284:43:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4723, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4682, "src": "5357:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4722, "name": "AcceptedMinter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4435, "src": "5342:14:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 4724, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5342:25:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4725, "nodeType": "EmitStatement", "src": "5337:30:9" } ] }, "documentation": "@dev acceptMinter\n Accepts Minter role (existing datatoken minter has to call datatoken.proposeMinter(dispenserAddress) first)\n@param datatoken refers to datatoken address.", "id": 4727, "implemented": true, "kind": "function", "modifiers": [], "name": "acceptMinter", "nodeType": "FunctionDefinition", "parameters": { "id": 4683, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4682, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4727, "src": "4908:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4681, "name": "address", "nodeType": "ElementaryTypeName", "src": "4908:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4907:19:9" }, "returnParameters": { "id": 4684, "nodeType": "ParameterList", "parameters": [], "src": "4935:0:9" }, "scope": 4986, "src": "4886:488:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4788, "nodeType": "Block", "src": "5642:591:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4733, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "5673:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5694:1:9", "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": 4734, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5686:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4736, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5686:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5673:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5710:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4732, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "5652:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4739, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5652:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4740, "nodeType": "ExpressionStatement", "src": "5652:100:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4742, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "5783:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4744, "indexExpression": { "argumentTypes": null, "id": 4743, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "5794:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5783:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "5783:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4746, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "5814:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5814:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5783:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "44617461546f6b656e20616c726561647920616374697661746564", "id": 4749, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5838:29:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" }, "value": "DataToken already activated" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "id": 4741, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "5762:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5762:115:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4751, "nodeType": "ExpressionStatement", "src": "5762:115:9" }, { "assignments": [ 4753 ], "declarations": [ { "constant": false, "id": 4753, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4788, "src": "5887:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4752, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "5887:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4757, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4755, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "5933:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4754, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "5918:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4756, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5918:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "5887:56:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4762, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "6005:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4761, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5997:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4763, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5997:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4759, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "5974:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5608, "src": "5974:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 4764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5974:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552523a2043616e6e6f7420616363657074206d696e74657220726f6c65", "id": 4765, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6025:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" }, "value": "ERR: Cannot accept minter role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" } ], "id": 4758, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "5953:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5953:114:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4767, "nodeType": "ExpressionStatement", "src": "5953:114:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4771, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "6105:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4773, "indexExpression": { "argumentTypes": null, "id": 4772, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "6116:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6105:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4774, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "6105:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 4768, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "6077:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "proposeMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5654, "src": "6077:27:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, "id": 4775, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6077:56:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4776, "nodeType": "ExpressionStatement", "src": "6077:56:9" }, { "expression": { "argumentTypes": null, "id": 4782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4777, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "6143:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4779, "indexExpression": { "argumentTypes": null, "id": 4778, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "6154:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6143:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4780, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "minterApproved", "nodeType": "MemberAccess", "referencedDeclaration": 4407, "src": "6143:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", "id": 4781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6182:5:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "6143:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4783, "nodeType": "ExpressionStatement", "src": "6143:44:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4785, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4729, "src": "6216:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4784, "name": "RemovedMinter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4439, "src": "6202:13:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 4786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6202:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4787, "nodeType": "EmitStatement", "src": "6197:29:9" } ] }, "documentation": "@dev removeMinter\n Removes Minter role and proposes the owner as a new minter (the owner has to call approveMinter after this)\n@param datatoken refers to datatoken address.", "id": 4789, "implemented": true, "kind": "function", "modifiers": [], "name": "removeMinter", "nodeType": "FunctionDefinition", "parameters": { "id": 4730, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4729, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4789, "src": "5615:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4728, "name": "address", "nodeType": "ElementaryTypeName", "src": "5615:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5614:19:9" }, "returnParameters": { "id": 4731, "nodeType": "ParameterList", "parameters": [], "src": "5642:0:9" }, "scope": 4986, "src": "5593:640:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4919, "nodeType": "Block", "src": "6613:1235:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4797, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "6644:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6665:1:9", "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": 4798, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6657:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6657:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6644:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6681:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4796, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "6623:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4803, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6623:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4804, "nodeType": "ExpressionStatement", "src": "6623:100:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 4811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4806, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "6754:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4808, "indexExpression": { "argumentTypes": null, "id": 4807, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "6765:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6754:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 4403, "src": "6754:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "74727565", "id": 4810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6786:4:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "6754:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "44697370656e736572206e6f7420616374697665", "id": 4812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6804:22:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad22fc5ad027c7c8b01eef1a92f40801532cfc3acc4dec7288322ef61342b858", "typeString": "literal_string \"Dispenser not active\"" }, "value": "Dispenser not active" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_ad22fc5ad027c7c8b01eef1a92f40801532cfc3acc4dec7288322ef61342b858", "typeString": "literal_string \"Dispenser not active\"" } ], "id": 4805, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "6733:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6733:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4814, "nodeType": "ExpressionStatement", "src": "6733:103:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4816, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "6867:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 4817, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6876:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "6867:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964207a65726f20616d6f756e74", "id": 4819, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6891:21:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3e58cd0dd15e69c386ad46aeaec0637af7b133b0b08192a22e891c7d736d3ac8", "typeString": "literal_string \"Invalid zero amount\"" }, "value": "Invalid zero amount" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_3e58cd0dd15e69c386ad46aeaec0637af7b133b0b08192a22e891c7d736d3ac8", "typeString": "literal_string \"Invalid zero amount\"" } ], "id": 4815, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "6846:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6846:76:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4821, "nodeType": "ExpressionStatement", "src": "6846:76:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4823, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "6953:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4825, "indexExpression": { "argumentTypes": null, "id": 4824, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "6964:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6953:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "maxTokens", "nodeType": "MemberAccess", "referencedDeclaration": 4409, "src": "6953:31:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 4827, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "6988:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6953:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "416d6f756e7420746f6f2068696768", "id": 4829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7008:17:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7353a6bd8628dd713e866f78b282b0b6793f273d47e76330330b9a5a159c17ef", "typeString": "literal_string \"Amount too high\"" }, "value": "Amount too high" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7353a6bd8628dd713e866f78b282b0b6793f273d47e76330330b9a5a159c17ef", "typeString": "literal_string \"Amount too high\"" } ], "id": 4822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "6932:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4830, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6932:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4831, "nodeType": "ExpressionStatement", "src": "6932:103:9" }, { "assignments": [ 4833 ], "declarations": [ { "constant": false, "id": 4833, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4919, "src": "7045:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4832, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "7045:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4837, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4835, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "7091:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4834, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "7076:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7076:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "7045:56:9" }, { "assignments": [ 4839 ], "declarations": [ { "constant": false, "id": 4839, "name": "callerBalance", "nodeType": "VariableDeclaration", "scope": 4919, "src": "7111:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4838, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7111:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 4845, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4842, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "7159:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7159:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4840, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7135:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 5640, "src": "7135:23:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 4844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7135:35:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7111:59:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4847, "name": "callerBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4839, "src": "7201:13:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4848, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "7215:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4850, "indexExpression": { "argumentTypes": null, "id": 4849, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "7226:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7215:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4851, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "maxBalance", "nodeType": "MemberAccess", "referencedDeclaration": 4411, "src": "7215:32:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7201:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "43616c6c65722062616c616e636520746f6f2068696768", "id": 4853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7261:25:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_036daf442604eb31ad74da9a69fe5dbd62aabfebb2991e7c7d29a1f2fe39919a", "typeString": "literal_string \"Caller balance too high\"" }, "value": "Caller balance too high" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_036daf442604eb31ad74da9a69fe5dbd62aabfebb2991e7c7d29a1f2fe39919a", "typeString": "literal_string \"Caller balance too high\"" } ], "id": 4846, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "7180:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4854, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7180:116:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4855, "nodeType": "ExpressionStatement", "src": "7180:116:9" }, { "assignments": [ 4857 ], "declarations": [ { "constant": false, "id": 4857, "name": "ourBalance", "nodeType": "VariableDeclaration", "scope": 4919, "src": "7306:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7306:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 4864, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4861, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "7359:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4860, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7351:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4862, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7351:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4858, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7327:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 5640, "src": "7327:23:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 4863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7327:38:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7306:59:9" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 4874, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4865, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "7378:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 4866, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "7389:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7378:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4871, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "7430:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7422:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4872, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7422:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4868, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7399:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMinter", "nodeType": "MemberAccess", "referencedDeclaration": 5608, "src": "7399:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 4873, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7399:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7378:58:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 4896, "nodeType": "IfStatement", "src": "7375:261:9", "trueBody": { "id": 4895, "nodeType": "Block", "src": "7437:199:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4879, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "7534:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4878, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7526:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7526:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4881, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "7540:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 4882, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "7549:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7540:19:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4875, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7507:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 5576, "src": "7507:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 4884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7507:53:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4885, "nodeType": "ExpressionStatement", "src": "7507:53:9" }, { "expression": { "argumentTypes": null, "id": 4893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4886, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "7574:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4890, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "7619:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7611:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7611:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4887, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7587:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 5640, "src": "7587:23:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 4892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7587:38:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7574:51:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4894, "nodeType": "ExpressionStatement", "src": "7574:51:9" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4898, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4857, "src": "7666:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 4899, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "7678:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7666:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4e6f7420656e6f756768207265736572766573", "id": 4901, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7698:21:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6b90a513fa74c2a8dc35fe1591468e10fc67c299dc0f325ea992d29212514d24", "typeString": "literal_string \"Not enough reserves\"" }, "value": "Not enough reserves" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6b90a513fa74c2a8dc35fe1591468e10fc67c299dc0f325ea992d29212514d24", "typeString": "literal_string \"Not enough reserves\"" } ], "id": 4897, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "7645:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4902, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7645:84:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4903, "nodeType": "ExpressionStatement", "src": "7645:84:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4907, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "7762:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7762:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 4909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "7773:6:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4904, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4833, "src": "7739:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 5649, "src": "7739:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 4910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7739:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4911, "nodeType": "ExpressionStatement", "src": "7739:41:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4913, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4791, "src": "7811:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4914, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "7822:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7822:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 4916, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4793, "src": "7834:6:9", "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": 4912, "name": "TokensDispensed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4447, "src": "7795:15:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 4917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7795:46:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4918, "nodeType": "EmitStatement", "src": "7790:51:9" } ] }, "documentation": "@dev dispense\n Dispense datatokens to caller. The dispenser must be active, hold enough DT (or be able to mint more) and respect maxTokens/maxBalance requirements\n@param datatoken refers to datatoken address.\n@param datatoken amount of datatokens required.", "id": 4920, "implemented": true, "kind": "function", "modifiers": [], "name": "dispense", "nodeType": "FunctionDefinition", "parameters": { "id": 4794, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4791, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4920, "src": "6562:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4790, "name": "address", "nodeType": "ElementaryTypeName", "src": "6562:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4793, "name": "amount", "nodeType": "VariableDeclaration", "scope": 4920, "src": "6581:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6581:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6561:35:9" }, "returnParameters": { "id": 4795, "nodeType": "ParameterList", "parameters": [], "src": "6613:0:9" }, "scope": 4986, "src": "6544:1304:9", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4980, "nodeType": "Block", "src": "8076:527:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4926, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4922, "src": "8107:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 4928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8128:1:9", "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": 4927, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8120:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8120:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8107:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "id": 4931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8144:32:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" }, "value": "Invalid token contract address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "id": 4925, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "8086:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8086:100:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4933, "nodeType": "ExpressionStatement", "src": "8086:100:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 4941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 4935, "name": "datatokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4416, "src": "8217:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DataToken_$4412_storage_$", "typeString": "mapping(address => struct Dispenser.DataToken storage ref)" } }, "id": 4937, "indexExpression": { "argumentTypes": null, "id": 4936, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4922, "src": "8228:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8217:21:9", "typeDescriptions": { "typeIdentifier": "t_struct$_DataToken_$4412_storage", "typeString": "struct Dispenser.DataToken storage ref" } }, "id": 4938, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 4405, "src": "8217:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4939, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "8248:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4940, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8248:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8217:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e6572", "id": 4942, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8272:15:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_110461b12e459dc76e692e7a47f9621cf45c7d48020c3c7b2066107cdf1f52ae", "typeString": "literal_string \"Invalid owner\"" }, "value": "Invalid owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_110461b12e459dc76e692e7a47f9621cf45c7d48020c3c7b2066107cdf1f52ae", "typeString": "literal_string \"Invalid owner\"" } ], "id": 4934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "src": "8196:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 4943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8196:101:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4944, "nodeType": "ExpressionStatement", "src": "8196:101:9" }, { "assignments": [ 4946 ], "declarations": [ { "constant": false, "id": 4946, "name": "tokenInstance", "nodeType": "VariableDeclaration", "scope": 4980, "src": "8307:28:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" }, "typeName": { "contractScope": null, "id": 4945, "name": "IERC20Template", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5658, "src": "8307:14:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "value": null, "visibility": "internal" } ], "id": 4950, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4948, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4922, "src": "8353:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 4947, "name": "IERC20Template", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5658, "src": "8338:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5658_$", "typeString": "type(contract IERC20Template)" } }, "id": 4949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8338:25:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "nodeType": "VariableDeclarationStatement", "src": "8307:56:9" }, { "assignments": [ 4952 ], "declarations": [ { "constant": false, "id": 4952, "name": "ourBalance", "nodeType": "VariableDeclaration", "scope": 4980, "src": "8373:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4951, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8373:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 4959, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4956, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7165, "src": "8426:4:9", "typeDescriptions": { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "id": 4955, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8418:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 4957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8418:13:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "id": 4953, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4946, "src": "8394:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 5640, "src": "8394:23:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 4958, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8394:38:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8373:59:9" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 4962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 4960, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4952, "src": "8445:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 4961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8456:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "8445:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 4979, "nodeType": "IfStatement", "src": "8442:155:9", "trueBody": { "id": 4978, "nodeType": "Block", "src": "8458:139:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4966, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "8495:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8495:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 4968, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4952, "src": "8506:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4963, "name": "tokenInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4946, "src": "8472:13:9", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Template_$5658", "typeString": "contract IERC20Template" } }, "id": 4965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 5649, "src": "8472:22:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 4969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8472:45:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 4970, "nodeType": "ExpressionStatement", "src": "8472:45:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4972, "name": "datatoken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4922, "src": "8552:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 4973, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7121, "src": "8563:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 4974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8563:10:9", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 4975, "name": "ourBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4952, "src": "8575:10:9", "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": 4971, "name": "OwnerWithdrawed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4455, "src": "8536:15:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 4976, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8536:50:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4977, "nodeType": "EmitStatement", "src": "8531:55:9" } ] } } ] }, "documentation": "@dev ownerWithdraw\n Allow owner to withdraw all datatokens in this dispenser balance\n@param datatoken refers to datatoken address.", "id": 4981, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerWithdraw", "nodeType": "FunctionDefinition", "parameters": { "id": 4923, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4922, "name": "datatoken", "nodeType": "VariableDeclaration", "scope": 4981, "src": "8049:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4921, "name": "address", "nodeType": "ElementaryTypeName", "src": "8049:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "8048:19:9" }, "returnParameters": { "id": 4924, "nodeType": "ParameterList", "parameters": [], "src": "8076:0:9" }, "scope": 4986, "src": "8026:577:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { "id": 4984, "nodeType": "Block", "src": "8636:45:9", "statements": [] }, "documentation": null, "id": 4985, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 4982, "nodeType": "ParameterList", "parameters": [], "src": "8616:2:9" }, "returnParameters": { "id": 4983, "nodeType": "ParameterList", "parameters": [], "src": "8636:0:9" }, "scope": 4986, "src": "8608:73:9", "stateMutability": "payable", "superFunction": null, "visibility": "external" } ], "scope": 4987, "src": "231:8452:9" } ], "src": "0:8683:9" }, "legacyAST": { "attributes": { "absolutePath": "/Users/ahmedali/Desktop/work/ocean/contracts/contracts/dispenser/Dispenser.sol", "exportedSymbols": { "Dispenser": [ 4986 ] } }, "children": [ { "attributes": { "literals": [ "solidity", "0.5", ".7" ] }, "id": 4400, "name": "PragmaDirective", "src": "0:22:9" }, { "attributes": { "SourceUnit": 5659, "absolutePath": "/Users/ahmedali/Desktop/work/ocean/contracts/contracts/interfaces/IERC20Template.sol", "file": "../interfaces/IERC20Template.sol", "scope": 4987, "symbolAliases": [ null ], "unitAlias": "" }, "id": 4401, "name": "ImportDirective", "src": "185:42:9" }, { "attributes": { "baseContracts": [ null ], "contractDependencies": [ null ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ 4986 ], "name": "Dispenser", "scope": 4987 }, "children": [ { "attributes": { "canonicalName": "Dispenser.DataToken", "name": "DataToken", "scope": 4986, "visibility": "public" }, "children": [ { "attributes": { "constant": false, "name": "active", "scope": 4412, "stateVariable": false, "storageLocation": "default", "type": "bool", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "bool", "type": "bool" }, "id": 4402, "name": "ElementaryTypeName", "src": "283:4:9" } ], "id": 4403, "name": "VariableDeclaration", "src": "283:11:9" }, { "attributes": { "constant": false, "name": "owner", "scope": 4412, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4404, "name": "ElementaryTypeName", "src": "354:7:9" } ], "id": 4405, "name": "VariableDeclaration", "src": "354:13:9" }, { "attributes": { "constant": false, "name": "minterApproved", "scope": 4412, "stateVariable": false, "storageLocation": "default", "type": "bool", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "bool", "type": "bool" }, "id": 4406, "name": "ElementaryTypeName", "src": "404:4:9" } ], "id": 4407, "name": "VariableDeclaration", "src": "404:19:9" }, { "attributes": { "constant": false, "name": "maxTokens", "scope": 4412, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4408, "name": "ElementaryTypeName", "src": "484:7:9" } ], "id": 4409, "name": "VariableDeclaration", "src": "484:17:9" }, { "attributes": { "constant": false, "name": "maxBalance", "scope": 4412, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4410, "name": "ElementaryTypeName", "src": "537:7:9" } ], "id": 4411, "name": "VariableDeclaration", "src": "537:18:9" } ], "id": 4412, "name": "StructDefinition", "src": "256:397:9" }, { "attributes": { "constant": false, "name": "datatokens", "scope": 4986, "stateVariable": true, "storageLocation": "default", "type": "mapping(address => struct Dispenser.DataToken)", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "type": "mapping(address => struct Dispenser.DataToken)" }, "children": [ { "attributes": { "name": "address", "type": "address" }, "id": 4413, "name": "ElementaryTypeName", "src": "666:7:9" }, { "attributes": { "contractScope": null, "name": "DataToken", "referencedDeclaration": 4412, "type": "struct Dispenser.DataToken" }, "id": 4414, "name": "UserDefinedTypeName", "src": "677:9:9" } ], "id": 4415, "name": "Mapping", "src": "658:29:9" } ], "id": 4416, "name": "VariableDeclaration", "src": "658:40:9" }, { "attributes": { "constant": false, "name": "datatokensList", "scope": 4986, "stateVariable": true, "storageLocation": "default", "type": "address[]", "value": null, "visibility": "public" }, "children": [ { "attributes": { "length": null, "type": "address[]" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4417, "name": "ElementaryTypeName", "src": "704:7:9" } ], "id": 4418, "name": "ArrayTypeName", "src": "704:9:9" } ], "id": 4419, "name": "VariableDeclaration", "src": "704:31:9" }, { "attributes": { "documentation": null, "implemented": true, "isConstructor": true, "kind": "constructor", "modifiers": [ null ], "name": "", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, "children": [ { "attributes": { "parameters": [ null ] }, "children": [], "id": 4420, "name": "ParameterList", "src": "752:2:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4421, "name": "ParameterList", "src": "762:0:9" }, { "attributes": { "statements": [ null ] }, "children": [], "id": 4422, "name": "Block", "src": "762:2:9" } ], "id": 4423, "name": "FunctionDefinition", "src": "741:23:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "Activated" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatokenAddress", "scope": 4427, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4424, "name": "ElementaryTypeName", "src": "840:7:9" } ], "id": 4425, "name": "VariableDeclaration", "src": "840:32:9" } ], "id": 4426, "name": "ParameterList", "src": "789:89:9" } ], "id": 4427, "name": "EventDefinition", "src": "774:105:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "Deactivated" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatokenAddress", "scope": 4431, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4428, "name": "ElementaryTypeName", "src": "954:7:9" } ], "id": 4429, "name": "VariableDeclaration", "src": "954:32:9" } ], "id": 4430, "name": "ParameterList", "src": "902:90:9" } ], "id": 4431, "name": "EventDefinition", "src": "885:108:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "AcceptedMinter" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatokenAddress", "scope": 4435, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4432, "name": "ElementaryTypeName", "src": "1097:7:9" } ], "id": 4433, "name": "VariableDeclaration", "src": "1097:32:9" } ], "id": 4434, "name": "ParameterList", "src": "1019:116:9" } ], "id": 4435, "name": "EventDefinition", "src": "999:137:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "RemovedMinter" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatokenAddress", "scope": 4439, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4436, "name": "ElementaryTypeName", "src": "1245:7:9" } ], "id": 4437, "name": "VariableDeclaration", "src": "1245:32:9" } ], "id": 4438, "name": "ParameterList", "src": "1161:122:9" } ], "id": 4439, "name": "EventDefinition", "src": "1142:142:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "TokensDispensed" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatokenAddress", "scope": 4447, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4440, "name": "ElementaryTypeName", "src": "1366:7:9" } ], "id": 4441, "name": "VariableDeclaration", "src": "1366:32:9" }, { "attributes": { "constant": false, "indexed": true, "name": "userAddress", "scope": 4447, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4442, "name": "ElementaryTypeName", "src": "1408:7:9" } ], "id": 4443, "name": "VariableDeclaration", "src": "1408:27:9" }, { "attributes": { "constant": false, "indexed": false, "name": "amount", "scope": 4447, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4444, "name": "ElementaryTypeName", "src": "1445:7:9" } ], "id": 4445, "name": "VariableDeclaration", "src": "1445:14:9" } ], "id": 4446, "name": "ParameterList", "src": "1311:154:9" } ], "id": 4447, "name": "EventDefinition", "src": "1290:176:9" }, { "attributes": { "anonymous": false, "documentation": null, "name": "OwnerWithdrawed" }, "children": [ { "children": [ { "attributes": { "constant": false, "indexed": true, "name": "datatoken", "scope": 4455, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4448, "name": "ElementaryTypeName", "src": "1503:7:9" } ], "id": 4449, "name": "VariableDeclaration", "src": "1503:25:9" }, { "attributes": { "constant": false, "indexed": true, "name": "owner", "scope": 4455, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4450, "name": "ElementaryTypeName", "src": "1538:7:9" } ], "id": 4451, "name": "VariableDeclaration", "src": "1538:21:9" }, { "attributes": { "constant": false, "indexed": false, "name": "amount", "scope": 4455, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4452, "name": "ElementaryTypeName", "src": "1569:7:9" } ], "id": 4453, "name": "VariableDeclaration", "src": "1569:14:9" } ], "id": 4454, "name": "ParameterList", "src": "1493:96:9" } ], "id": 4455, "name": "EventDefinition", "src": "1472:118:9" }, { "attributes": { "documentation": "@dev status\n Get information about a datatoken dispenser\n@param datatoken refers to datatoken address.\n@return active - if the dispenser is active for this datatoken\n@return owner - owner of this dispenser\n@return minterApproved - if the dispenser is a minter for this datatoken\n@return isTrueMinter - check the datatoken contract if this contract is really a minter\n@return maxTokens - max tokens to dispense\n@return maxBalance - max balance of requester. If the balance is higher, the dispense is rejected\n@return balance - internal balance of the contract (if any)", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "status", "scope": 4986, "stateMutability": "view", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4456, "name": "ElementaryTypeName", "src": "2271:7:9" } ], "id": 4457, "name": "VariableDeclaration", "src": "2271:17:9" } ], "id": 4458, "name": "ParameterList", "src": "2270:19:9" }, { "children": [ { "attributes": { "constant": false, "name": "active", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "bool", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "bool", "type": "bool" }, "id": 4459, "name": "ElementaryTypeName", "src": "2322:4:9" } ], "id": 4460, "name": "VariableDeclaration", "src": "2322:11:9" }, { "attributes": { "constant": false, "name": "owner", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4461, "name": "ElementaryTypeName", "src": "2334:7:9" } ], "id": 4462, "name": "VariableDeclaration", "src": "2334:13:9" }, { "attributes": { "constant": false, "name": "minterApproved", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "bool", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "bool", "type": "bool" }, "id": 4463, "name": "ElementaryTypeName", "src": "2348:4:9" } ], "id": 4464, "name": "VariableDeclaration", "src": "2348:19:9" }, { "attributes": { "constant": false, "name": "isTrueMinter", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "bool", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "bool", "type": "bool" }, "id": 4465, "name": "ElementaryTypeName", "src": "2373:4:9" } ], "id": 4466, "name": "VariableDeclaration", "src": "2373:17:9" }, { "attributes": { "constant": false, "name": "maxTokens", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4467, "name": "ElementaryTypeName", "src": "2391:7:9" } ], "id": 4468, "name": "VariableDeclaration", "src": "2391:17:9" }, { "attributes": { "constant": false, "name": "maxBalance", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4469, "name": "ElementaryTypeName", "src": "2409:7:9" } ], "id": 4470, "name": "VariableDeclaration", "src": "2409:18:9" }, { "attributes": { "constant": false, "name": "balance", "scope": 4543, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4471, "name": "ElementaryTypeName", "src": "2429:7:9" } ], "id": 4472, "name": "VariableDeclaration", "src": "2429:15:9" } ], "id": 4473, "name": "ParameterList", "src": "2321:124:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4474, "name": "Identifier", "src": "2455:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4475, "name": "Identifier", "src": "2476:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4476, "name": "ElementaryTypeNameExpression", "src": "2489:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4477, "name": "Literal", "src": "2497:1:9" } ], "id": 4478, "name": "FunctionCall", "src": "2489:10:9" } ], "id": 4479, "name": "BinaryOperation", "src": "2476:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4480, "name": "Literal", "src": "2513:32:9" } ], "id": 4481, "name": "FunctionCall", "src": "2455:100:9" } ], "id": 4482, "name": "ExpressionStatement", "src": "2455:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4460, "type": "bool", "value": "active" }, "id": 4483, "name": "Identifier", "src": "2565:6:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "active", "referencedDeclaration": 4403, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4484, "name": "Identifier", "src": "2574:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4485, "name": "Identifier", "src": "2585:9:9" } ], "id": 4486, "name": "IndexAccess", "src": "2574:21:9" } ], "id": 4487, "name": "MemberAccess", "src": "2574:28:9" } ], "id": 4488, "name": "Assignment", "src": "2565:37:9" } ], "id": 4489, "name": "ExpressionStatement", "src": "2565:37:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4462, "type": "address", "value": "owner" }, "id": 4490, "name": "Identifier", "src": "2612:5:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4491, "name": "Identifier", "src": "2620:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4492, "name": "Identifier", "src": "2631:9:9" } ], "id": 4493, "name": "IndexAccess", "src": "2620:21:9" } ], "id": 4494, "name": "MemberAccess", "src": "2620:27:9" } ], "id": 4495, "name": "Assignment", "src": "2612:35:9" } ], "id": 4496, "name": "ExpressionStatement", "src": "2612:35:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4464, "type": "bool", "value": "minterApproved" }, "id": 4497, "name": "Identifier", "src": "2657:14:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "minterApproved", "referencedDeclaration": 4407, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4498, "name": "Identifier", "src": "2674:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4499, "name": "Identifier", "src": "2685:9:9" } ], "id": 4500, "name": "IndexAccess", "src": "2674:21:9" } ], "id": 4501, "name": "MemberAccess", "src": "2674:36:9" } ], "id": 4502, "name": "Assignment", "src": "2657:53:9" } ], "id": 4503, "name": "ExpressionStatement", "src": "2657:53:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4468, "type": "uint256", "value": "maxTokens" }, "id": 4504, "name": "Identifier", "src": "2720:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "maxTokens", "referencedDeclaration": 4409, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4505, "name": "Identifier", "src": "2732:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4506, "name": "Identifier", "src": "2743:9:9" } ], "id": 4507, "name": "IndexAccess", "src": "2732:21:9" } ], "id": 4508, "name": "MemberAccess", "src": "2732:31:9" } ], "id": 4509, "name": "Assignment", "src": "2720:43:9" } ], "id": 4510, "name": "ExpressionStatement", "src": "2720:43:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4470, "type": "uint256", "value": "maxBalance" }, "id": 4511, "name": "Identifier", "src": "2773:10:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "maxBalance", "referencedDeclaration": 4411, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4512, "name": "Identifier", "src": "2786:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4513, "name": "Identifier", "src": "2797:9:9" } ], "id": 4514, "name": "IndexAccess", "src": "2786:21:9" } ], "id": 4515, "name": "MemberAccess", "src": "2786:32:9" } ], "id": 4516, "name": "Assignment", "src": "2773:45:9" } ], "id": 4517, "name": "ExpressionStatement", "src": "2773:45:9" }, { "attributes": { "assignments": [ 4519 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4542, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4518, "name": "UserDefinedTypeName", "src": "2828:14:9" } ], "id": 4519, "name": "VariableDeclaration", "src": "2828:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4520, "name": "Identifier", "src": "2859:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4457, "type": "address", "value": "datatoken" }, "id": 4521, "name": "Identifier", "src": "2874:9:9" } ], "id": 4522, "name": "FunctionCall", "src": "2859:25:9" } ], "id": 4523, "name": "VariableDeclarationStatement", "src": "2828:56:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4472, "type": "uint256", "value": "balance" }, "id": 4524, "name": "Identifier", "src": "2894:7:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "balanceOf", "referencedDeclaration": 5640, "type": "function (address) view external returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4519, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4525, "name": "Identifier", "src": "2904:13:9" } ], "id": 4526, "name": "MemberAccess", "src": "2904:23:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4527, "name": "ElementaryTypeNameExpression", "src": "2928:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4528, "name": "Identifier", "src": "2936:4:9" } ], "id": 4529, "name": "FunctionCall", "src": "2928:13:9" } ], "id": 4530, "name": "FunctionCall", "src": "2904:38:9" } ], "id": 4531, "name": "Assignment", "src": "2894:48:9" } ], "id": 4532, "name": "ExpressionStatement", "src": "2894:48:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4466, "type": "bool", "value": "isTrueMinter" }, "id": 4533, "name": "Identifier", "src": "2952:12:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "isMinter", "referencedDeclaration": 5608, "type": "function (address) view external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4519, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4534, "name": "Identifier", "src": "2967:13:9" } ], "id": 4535, "name": "MemberAccess", "src": "2967:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4536, "name": "ElementaryTypeNameExpression", "src": "2990:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4537, "name": "Identifier", "src": "2998:4:9" } ], "id": 4538, "name": "FunctionCall", "src": "2990:13:9" } ], "id": 4539, "name": "FunctionCall", "src": "2967:37:9" } ], "id": 4540, "name": "Assignment", "src": "2952:52:9" } ], "id": 4541, "name": "ExpressionStatement", "src": "2952:52:9" } ], "id": 4542, "name": "Block", "src": "2445:566:9" } ], "id": 4543, "name": "FunctionDefinition", "src": "2255:756:9" }, { "attributes": { "documentation": "@dev activate\n Activate a new dispenser\n@param datatoken refers to datatoken address.\n@param maxTokens - max tokens to dispense\n@param maxBalance - max balance of requester.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "activate", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4643, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4544, "name": "ElementaryTypeName", "src": "3264:7:9" } ], "id": 4545, "name": "VariableDeclaration", "src": "3264:17:9" }, { "attributes": { "constant": false, "name": "maxTokens", "scope": 4643, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4546, "name": "ElementaryTypeName", "src": "3282:7:9" } ], "id": 4547, "name": "VariableDeclaration", "src": "3282:17:9" }, { "attributes": { "constant": false, "name": "maxBalance", "scope": 4643, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4548, "name": "ElementaryTypeName", "src": "3301:7:9" } ], "id": 4549, "name": "VariableDeclaration", "src": "3301:18:9" } ], "id": 4550, "name": "ParameterList", "src": "3263:57:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4551, "name": "ParameterList", "src": "3338:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4552, "name": "Identifier", "src": "3348:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4553, "name": "Identifier", "src": "3369:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4554, "name": "ElementaryTypeNameExpression", "src": "3382:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4555, "name": "Literal", "src": "3390:1:9" } ], "id": 4556, "name": "FunctionCall", "src": "3382:10:9" } ], "id": 4557, "name": "BinaryOperation", "src": "3369:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4558, "name": "Literal", "src": "3406:32:9" } ], "id": 4559, "name": "FunctionCall", "src": "3348:100:9" } ], "id": 4560, "name": "ExpressionStatement", "src": "3348:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4561, "name": "Identifier", "src": "3458:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "||", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4562, "name": "Identifier", "src": "3479:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4563, "name": "Identifier", "src": "3490:9:9" } ], "id": 4564, "name": "IndexAccess", "src": "3479:21:9" } ], "id": 4565, "name": "MemberAccess", "src": "3479:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4566, "name": "ElementaryTypeNameExpression", "src": "3510:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4567, "name": "Literal", "src": "3518:1:9" } ], "id": 4568, "name": "FunctionCall", "src": "3510:10:9" } ], "id": 4569, "name": "BinaryOperation", "src": "3479:41:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4570, "name": "Identifier", "src": "3524:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4571, "name": "Identifier", "src": "3535:9:9" } ], "id": 4572, "name": "IndexAccess", "src": "3524:21:9" } ], "id": 4573, "name": "MemberAccess", "src": "3524:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4574, "name": "Identifier", "src": "3555:3:9" } ], "id": 4575, "name": "MemberAccess", "src": "3555:10:9" } ], "id": 4576, "name": "BinaryOperation", "src": "3524:41:9" } ], "id": 4577, "name": "BinaryOperation", "src": "3479:86:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "44617461546f6b656e20616c726561647920616374697661746564", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"DataToken already activated\"", "value": "DataToken already activated" }, "id": 4578, "name": "Literal", "src": "3579:29:9" } ], "id": 4579, "name": "FunctionCall", "src": "3458:160:9" } ], "id": 4580, "name": "ExpressionStatement", "src": "3458:160:9" }, { "attributes": { "assignments": [ 4582 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4642, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4581, "name": "UserDefinedTypeName", "src": "3628:14:9" } ], "id": 4582, "name": "VariableDeclaration", "src": "3628:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4583, "name": "Identifier", "src": "3659:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4584, "name": "Identifier", "src": "3674:9:9" } ], "id": 4585, "name": "FunctionCall", "src": "3659:25:9" } ], "id": 4586, "name": "VariableDeclarationStatement", "src": "3628:56:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9ee47ffa5d7be08bbcf8e567aa23ba3d67c2f7b7ccc9551956c2443209e5c72", "typeString": "literal_string \"Sender does not have the minter role\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4587, "name": "Identifier", "src": "3694:7:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "isMinter", "referencedDeclaration": 5608, "type": "function (address) view external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4582, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4588, "name": "Identifier", "src": "3715:13:9" } ], "id": 4589, "name": "MemberAccess", "src": "3715:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4590, "name": "Identifier", "src": "3738:3:9" } ], "id": 4591, "name": "MemberAccess", "src": "3738:10:9" } ], "id": 4592, "name": "FunctionCall", "src": "3715:34:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "53656e64657220646f6573206e6f74206861766520746865206d696e74657220726f6c65", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Sender does not have the minter role\"", "value": "Sender does not have the minter role" }, "id": 4593, "name": "Literal", "src": "3763:38:9" } ], "id": 4594, "name": "FunctionCall", "src": "3694:117:9" } ], "id": 4595, "name": "ExpressionStatement", "src": "3694:117:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "active", "referencedDeclaration": 4403, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4596, "name": "Identifier", "src": "3821:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4597, "name": "Identifier", "src": "3832:9:9" } ], "id": 4598, "name": "IndexAccess", "src": "3821:21:9" } ], "id": 4599, "name": "MemberAccess", "src": "3821:28:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "74727565", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "true" }, "id": 4600, "name": "Literal", "src": "3852:4:9" } ], "id": 4601, "name": "Assignment", "src": "3821:35:9" } ], "id": 4602, "name": "ExpressionStatement", "src": "3821:35:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4603, "name": "Identifier", "src": "3866:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4604, "name": "Identifier", "src": "3877:9:9" } ], "id": 4605, "name": "IndexAccess", "src": "3866:21:9" } ], "id": 4606, "name": "MemberAccess", "src": "3866:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4607, "name": "Identifier", "src": "3896:3:9" } ], "id": 4608, "name": "MemberAccess", "src": "3896:10:9" } ], "id": 4609, "name": "Assignment", "src": "3866:40:9" } ], "id": 4610, "name": "ExpressionStatement", "src": "3866:40:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "maxTokens", "referencedDeclaration": 4409, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4611, "name": "Identifier", "src": "3916:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4612, "name": "Identifier", "src": "3927:9:9" } ], "id": 4613, "name": "IndexAccess", "src": "3916:21:9" } ], "id": 4614, "name": "MemberAccess", "src": "3916:31:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4547, "type": "uint256", "value": "maxTokens" }, "id": 4615, "name": "Identifier", "src": "3950:9:9" } ], "id": 4616, "name": "Assignment", "src": "3916:43:9" } ], "id": 4617, "name": "ExpressionStatement", "src": "3916:43:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "maxBalance", "referencedDeclaration": 4411, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4618, "name": "Identifier", "src": "3969:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4619, "name": "Identifier", "src": "3980:9:9" } ], "id": 4620, "name": "IndexAccess", "src": "3969:21:9" } ], "id": 4621, "name": "MemberAccess", "src": "3969:32:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4549, "type": "uint256", "value": "maxBalance" }, "id": 4622, "name": "Identifier", "src": "4004:10:9" } ], "id": 4623, "name": "Assignment", "src": "3969:45:9" } ], "id": 4624, "name": "ExpressionStatement", "src": "3969:45:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "minterApproved", "referencedDeclaration": 4407, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4625, "name": "Identifier", "src": "4024:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4626, "name": "Identifier", "src": "4035:9:9" } ], "id": 4627, "name": "IndexAccess", "src": "4024:21:9" } ], "id": 4628, "name": "MemberAccess", "src": "4024:36:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "66616c7365", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "false" }, "id": 4629, "name": "Literal", "src": "4063:5:9" } ], "id": 4630, "name": "Assignment", "src": "4024:44:9" } ], "id": 4631, "name": "ExpressionStatement", "src": "4024:44:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "push", "referencedDeclaration": null, "type": "function (address) returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4419, "type": "address[] storage ref", "value": "datatokensList" }, "id": 4632, "name": "Identifier", "src": "4078:14:9" } ], "id": 4634, "name": "MemberAccess", "src": "4078:19:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4635, "name": "Identifier", "src": "4098:9:9" } ], "id": 4636, "name": "FunctionCall", "src": "4078:30:9" } ], "id": 4637, "name": "ExpressionStatement", "src": "4078:30:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4427, "type": "function (address)", "value": "Activated" }, "id": 4638, "name": "Identifier", "src": "4123:9:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4545, "type": "address", "value": "datatoken" }, "id": 4639, "name": "Identifier", "src": "4133:9:9" } ], "id": 4640, "name": "FunctionCall", "src": "4123:20:9" } ], "id": 4641, "name": "EmitStatement", "src": "4118:25:9" } ], "id": 4642, "name": "Block", "src": "3338:812:9" } ], "id": 4643, "name": "FunctionDefinition", "src": "3246:904:9" }, { "attributes": { "documentation": "@dev deactivate\n Deactivate an existing dispenser\n@param datatoken refers to datatoken address.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "deactivate", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4680, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4644, "name": "ElementaryTypeName", "src": "4313:7:9" } ], "id": 4645, "name": "VariableDeclaration", "src": "4313:17:9" } ], "id": 4646, "name": "ParameterList", "src": "4312:19:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4647, "name": "ParameterList", "src": "4340:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4648, "name": "Identifier", "src": "4350:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4645, "type": "address", "value": "datatoken" }, "id": 4649, "name": "Identifier", "src": "4371:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4650, "name": "ElementaryTypeNameExpression", "src": "4384:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4651, "name": "Literal", "src": "4392:1:9" } ], "id": 4652, "name": "FunctionCall", "src": "4384:10:9" } ], "id": 4653, "name": "BinaryOperation", "src": "4371:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4654, "name": "Literal", "src": "4408:32:9" } ], "id": 4655, "name": "FunctionCall", "src": "4350:100:9" } ], "id": 4656, "name": "ExpressionStatement", "src": "4350:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4657, "name": "Identifier", "src": "4460:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4658, "name": "Identifier", "src": "4481:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4645, "type": "address", "value": "datatoken" }, "id": 4659, "name": "Identifier", "src": "4492:9:9" } ], "id": 4660, "name": "IndexAccess", "src": "4481:21:9" } ], "id": 4661, "name": "MemberAccess", "src": "4481:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4662, "name": "Identifier", "src": "4512:3:9" } ], "id": 4663, "name": "MemberAccess", "src": "4512:10:9" } ], "id": 4664, "name": "BinaryOperation", "src": "4481:41:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "44617461546f6b656e20616c726561647920616374697661746564", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"DataToken already activated\"", "value": "DataToken already activated" }, "id": 4665, "name": "Literal", "src": "4536:29:9" } ], "id": 4666, "name": "FunctionCall", "src": "4460:115:9" } ], "id": 4667, "name": "ExpressionStatement", "src": "4460:115:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "active", "referencedDeclaration": 4403, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4668, "name": "Identifier", "src": "4585:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4645, "type": "address", "value": "datatoken" }, "id": 4669, "name": "Identifier", "src": "4596:9:9" } ], "id": 4670, "name": "IndexAccess", "src": "4585:21:9" } ], "id": 4671, "name": "MemberAccess", "src": "4585:28:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "66616c7365", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "false" }, "id": 4672, "name": "Literal", "src": "4616:5:9" } ], "id": 4673, "name": "Assignment", "src": "4585:36:9" } ], "id": 4674, "name": "ExpressionStatement", "src": "4585:36:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4431, "type": "function (address)", "value": "Deactivated" }, "id": 4675, "name": "Identifier", "src": "4636:11:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4645, "type": "address", "value": "datatoken" }, "id": 4676, "name": "Identifier", "src": "4648:9:9" } ], "id": 4677, "name": "FunctionCall", "src": "4636:22:9" } ], "id": 4678, "name": "EmitStatement", "src": "4631:27:9" } ], "id": 4679, "name": "Block", "src": "4340:325:9" } ], "id": 4680, "name": "FunctionDefinition", "src": "4293:372:9" }, { "attributes": { "documentation": "@dev acceptMinter\n Accepts Minter role (existing datatoken minter has to call datatoken.proposeMinter(dispenserAddress) first)\n@param datatoken refers to datatoken address.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "acceptMinter", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4727, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4681, "name": "ElementaryTypeName", "src": "4908:7:9" } ], "id": 4682, "name": "VariableDeclaration", "src": "4908:17:9" } ], "id": 4683, "name": "ParameterList", "src": "4907:19:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4684, "name": "ParameterList", "src": "4935:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4685, "name": "Identifier", "src": "4945:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4682, "type": "address", "value": "datatoken" }, "id": 4686, "name": "Identifier", "src": "4966:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4687, "name": "ElementaryTypeNameExpression", "src": "4979:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4688, "name": "Literal", "src": "4987:1:9" } ], "id": 4689, "name": "FunctionCall", "src": "4979:10:9" } ], "id": 4690, "name": "BinaryOperation", "src": "4966:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4691, "name": "Literal", "src": "5003:32:9" } ], "id": 4692, "name": "FunctionCall", "src": "4945:100:9" } ], "id": 4693, "name": "ExpressionStatement", "src": "4945:100:9" }, { "attributes": { "assignments": [ 4695 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4726, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4694, "name": "UserDefinedTypeName", "src": "5055:14:9" } ], "id": 4695, "name": "VariableDeclaration", "src": "5055:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4696, "name": "Identifier", "src": "5086:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4682, "type": "address", "value": "datatoken" }, "id": 4697, "name": "Identifier", "src": "5101:9:9" } ], "id": 4698, "name": "FunctionCall", "src": "5086:25:9" } ], "id": 4699, "name": "VariableDeclarationStatement", "src": "5055:56:9" }, { "children": [ { "attributes": { "argumentTypes": null, "arguments": [ null ], "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ null ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "approveMinter", "referencedDeclaration": 5657, "type": "function () external" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4695, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4700, "name": "Identifier", "src": "5121:13:9" } ], "id": 4702, "name": "MemberAccess", "src": "5121:27:9" } ], "id": 4703, "name": "FunctionCall", "src": "5121:29:9" } ], "id": 4704, "name": "ExpressionStatement", "src": "5121:29:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4705, "name": "Identifier", "src": "5160:7:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "isMinter", "referencedDeclaration": 5608, "type": "function (address) view external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4695, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4706, "name": "Identifier", "src": "5181:13:9" } ], "id": 4707, "name": "MemberAccess", "src": "5181:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4708, "name": "ElementaryTypeNameExpression", "src": "5204:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4709, "name": "Identifier", "src": "5212:4:9" } ], "id": 4710, "name": "FunctionCall", "src": "5204:13:9" } ], "id": 4711, "name": "FunctionCall", "src": "5181:37:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "4552523a2043616e6e6f7420616363657074206d696e74657220726f6c65", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"ERR: Cannot accept minter role\"", "value": "ERR: Cannot accept minter role" }, "id": 4712, "name": "Literal", "src": "5232:32:9" } ], "id": 4713, "name": "FunctionCall", "src": "5160:114:9" } ], "id": 4714, "name": "ExpressionStatement", "src": "5160:114:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "minterApproved", "referencedDeclaration": 4407, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4715, "name": "Identifier", "src": "5284:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4682, "type": "address", "value": "datatoken" }, "id": 4716, "name": "Identifier", "src": "5295:9:9" } ], "id": 4717, "name": "IndexAccess", "src": "5284:21:9" } ], "id": 4718, "name": "MemberAccess", "src": "5284:36:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "74727565", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "true" }, "id": 4719, "name": "Literal", "src": "5323:4:9" } ], "id": 4720, "name": "Assignment", "src": "5284:43:9" } ], "id": 4721, "name": "ExpressionStatement", "src": "5284:43:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4435, "type": "function (address)", "value": "AcceptedMinter" }, "id": 4722, "name": "Identifier", "src": "5342:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4682, "type": "address", "value": "datatoken" }, "id": 4723, "name": "Identifier", "src": "5357:9:9" } ], "id": 4724, "name": "FunctionCall", "src": "5342:25:9" } ], "id": 4725, "name": "EmitStatement", "src": "5337:30:9" } ], "id": 4726, "name": "Block", "src": "4935:439:9" } ], "id": 4727, "name": "FunctionDefinition", "src": "4886:488:9" }, { "attributes": { "documentation": "@dev removeMinter\n Removes Minter role and proposes the owner as a new minter (the owner has to call approveMinter after this)\n@param datatoken refers to datatoken address.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "removeMinter", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4789, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4728, "name": "ElementaryTypeName", "src": "5615:7:9" } ], "id": 4729, "name": "VariableDeclaration", "src": "5615:17:9" } ], "id": 4730, "name": "ParameterList", "src": "5614:19:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4731, "name": "ParameterList", "src": "5642:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4732, "name": "Identifier", "src": "5652:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4733, "name": "Identifier", "src": "5673:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4734, "name": "ElementaryTypeNameExpression", "src": "5686:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4735, "name": "Literal", "src": "5694:1:9" } ], "id": 4736, "name": "FunctionCall", "src": "5686:10:9" } ], "id": 4737, "name": "BinaryOperation", "src": "5673:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4738, "name": "Literal", "src": "5710:32:9" } ], "id": 4739, "name": "FunctionCall", "src": "5652:100:9" } ], "id": 4740, "name": "ExpressionStatement", "src": "5652:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_802727ce41e9ef5c4e956e0703828b375cc164569f34790696628fad0573768e", "typeString": "literal_string \"DataToken already activated\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4741, "name": "Identifier", "src": "5762:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4742, "name": "Identifier", "src": "5783:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4743, "name": "Identifier", "src": "5794:9:9" } ], "id": 4744, "name": "IndexAccess", "src": "5783:21:9" } ], "id": 4745, "name": "MemberAccess", "src": "5783:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4746, "name": "Identifier", "src": "5814:3:9" } ], "id": 4747, "name": "MemberAccess", "src": "5814:10:9" } ], "id": 4748, "name": "BinaryOperation", "src": "5783:41:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "44617461546f6b656e20616c726561647920616374697661746564", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"DataToken already activated\"", "value": "DataToken already activated" }, "id": 4749, "name": "Literal", "src": "5838:29:9" } ], "id": 4750, "name": "FunctionCall", "src": "5762:115:9" } ], "id": 4751, "name": "ExpressionStatement", "src": "5762:115:9" }, { "attributes": { "assignments": [ 4753 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4788, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4752, "name": "UserDefinedTypeName", "src": "5887:14:9" } ], "id": 4753, "name": "VariableDeclaration", "src": "5887:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4754, "name": "Identifier", "src": "5918:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4755, "name": "Identifier", "src": "5933:9:9" } ], "id": 4756, "name": "FunctionCall", "src": "5918:25:9" } ], "id": 4757, "name": "VariableDeclarationStatement", "src": "5887:56:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0cfbec393383e0fce86a0bb31aa847b6ed694cf44c618a4606d1f2f2834c3497", "typeString": "literal_string \"ERR: Cannot accept minter role\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4758, "name": "Identifier", "src": "5953:7:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "isMinter", "referencedDeclaration": 5608, "type": "function (address) view external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4753, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4759, "name": "Identifier", "src": "5974:13:9" } ], "id": 4760, "name": "MemberAccess", "src": "5974:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4761, "name": "ElementaryTypeNameExpression", "src": "5997:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4762, "name": "Identifier", "src": "6005:4:9" } ], "id": 4763, "name": "FunctionCall", "src": "5997:13:9" } ], "id": 4764, "name": "FunctionCall", "src": "5974:37:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "4552523a2043616e6e6f7420616363657074206d696e74657220726f6c65", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"ERR: Cannot accept minter role\"", "value": "ERR: Cannot accept minter role" }, "id": 4765, "name": "Literal", "src": "6025:32:9" } ], "id": 4766, "name": "FunctionCall", "src": "5953:114:9" } ], "id": 4767, "name": "ExpressionStatement", "src": "5953:114:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "proposeMinter", "referencedDeclaration": 5654, "type": "function (address) external" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4753, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4768, "name": "Identifier", "src": "6077:13:9" } ], "id": 4770, "name": "MemberAccess", "src": "6077:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4771, "name": "Identifier", "src": "6105:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4772, "name": "Identifier", "src": "6116:9:9" } ], "id": 4773, "name": "IndexAccess", "src": "6105:21:9" } ], "id": 4774, "name": "MemberAccess", "src": "6105:27:9" } ], "id": 4775, "name": "FunctionCall", "src": "6077:56:9" } ], "id": 4776, "name": "ExpressionStatement", "src": "6077:56:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "member_name": "minterApproved", "referencedDeclaration": 4407, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4777, "name": "Identifier", "src": "6143:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4778, "name": "Identifier", "src": "6154:9:9" } ], "id": 4779, "name": "IndexAccess", "src": "6143:21:9" } ], "id": 4780, "name": "MemberAccess", "src": "6143:36:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "66616c7365", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "false" }, "id": 4781, "name": "Literal", "src": "6182:5:9" } ], "id": 4782, "name": "Assignment", "src": "6143:44:9" } ], "id": 4783, "name": "ExpressionStatement", "src": "6143:44:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4439, "type": "function (address)", "value": "RemovedMinter" }, "id": 4784, "name": "Identifier", "src": "6202:13:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4729, "type": "address", "value": "datatoken" }, "id": 4785, "name": "Identifier", "src": "6216:9:9" } ], "id": 4786, "name": "FunctionCall", "src": "6202:24:9" } ], "id": 4787, "name": "EmitStatement", "src": "6197:29:9" } ], "id": 4788, "name": "Block", "src": "5642:591:9" } ], "id": 4789, "name": "FunctionDefinition", "src": "5593:640:9" }, { "attributes": { "documentation": "@dev dispense\n Dispense datatokens to caller. The dispenser must be active, hold enough DT (or be able to mint more) and respect maxTokens/maxBalance requirements\n@param datatoken refers to datatoken address.\n@param datatoken amount of datatokens required.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "dispense", "scope": 4986, "stateMutability": "payable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4920, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4790, "name": "ElementaryTypeName", "src": "6562:7:9" } ], "id": 4791, "name": "VariableDeclaration", "src": "6562:17:9" }, { "attributes": { "constant": false, "name": "amount", "scope": 4920, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4792, "name": "ElementaryTypeName", "src": "6581:7:9" } ], "id": 4793, "name": "VariableDeclaration", "src": "6581:14:9" } ], "id": 4794, "name": "ParameterList", "src": "6561:35:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4795, "name": "ParameterList", "src": "6613:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4796, "name": "Identifier", "src": "6623:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4797, "name": "Identifier", "src": "6644:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4798, "name": "ElementaryTypeNameExpression", "src": "6657:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4799, "name": "Literal", "src": "6665:1:9" } ], "id": 4800, "name": "FunctionCall", "src": "6657:10:9" } ], "id": 4801, "name": "BinaryOperation", "src": "6644:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4802, "name": "Literal", "src": "6681:32:9" } ], "id": 4803, "name": "FunctionCall", "src": "6623:100:9" } ], "id": 4804, "name": "ExpressionStatement", "src": "6623:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_ad22fc5ad027c7c8b01eef1a92f40801532cfc3acc4dec7288322ef61342b858", "typeString": "literal_string \"Dispenser not active\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4805, "name": "Identifier", "src": "6733:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "active", "referencedDeclaration": 4403, "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4806, "name": "Identifier", "src": "6754:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4807, "name": "Identifier", "src": "6765:9:9" } ], "id": 4808, "name": "IndexAccess", "src": "6754:21:9" } ], "id": 4809, "name": "MemberAccess", "src": "6754:28:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "74727565", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "bool", "type": "bool", "value": "true" }, "id": 4810, "name": "Literal", "src": "6786:4:9" } ], "id": 4811, "name": "BinaryOperation", "src": "6754:36:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "44697370656e736572206e6f7420616374697665", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Dispenser not active\"", "value": "Dispenser not active" }, "id": 4812, "name": "Literal", "src": "6804:22:9" } ], "id": 4813, "name": "FunctionCall", "src": "6733:103:9" } ], "id": 4814, "name": "ExpressionStatement", "src": "6733:103:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_3e58cd0dd15e69c386ad46aeaec0637af7b133b0b08192a22e891c7d736d3ac8", "typeString": "literal_string \"Invalid zero amount\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4815, "name": "Identifier", "src": "6846:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": ">", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4816, "name": "Identifier", "src": "6867:6:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4817, "name": "Literal", "src": "6876:1:9" } ], "id": 4818, "name": "BinaryOperation", "src": "6867:10:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c6964207a65726f20616d6f756e74", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid zero amount\"", "value": "Invalid zero amount" }, "id": 4819, "name": "Literal", "src": "6891:21:9" } ], "id": 4820, "name": "FunctionCall", "src": "6846:76:9" } ], "id": 4821, "name": "ExpressionStatement", "src": "6846:76:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7353a6bd8628dd713e866f78b282b0b6793f273d47e76330330b9a5a159c17ef", "typeString": "literal_string \"Amount too high\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4822, "name": "Identifier", "src": "6932:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": ">=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "maxTokens", "referencedDeclaration": 4409, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4823, "name": "Identifier", "src": "6953:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4824, "name": "Identifier", "src": "6964:9:9" } ], "id": 4825, "name": "IndexAccess", "src": "6953:21:9" } ], "id": 4826, "name": "MemberAccess", "src": "6953:31:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4827, "name": "Identifier", "src": "6988:6:9" } ], "id": 4828, "name": "BinaryOperation", "src": "6953:41:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "416d6f756e7420746f6f2068696768", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Amount too high\"", "value": "Amount too high" }, "id": 4829, "name": "Literal", "src": "7008:17:9" } ], "id": 4830, "name": "FunctionCall", "src": "6932:103:9" } ], "id": 4831, "name": "ExpressionStatement", "src": "6932:103:9" }, { "attributes": { "assignments": [ 4833 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4919, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4832, "name": "UserDefinedTypeName", "src": "7045:14:9" } ], "id": 4833, "name": "VariableDeclaration", "src": "7045:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4834, "name": "Identifier", "src": "7076:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4835, "name": "Identifier", "src": "7091:9:9" } ], "id": 4836, "name": "FunctionCall", "src": "7076:25:9" } ], "id": 4837, "name": "VariableDeclarationStatement", "src": "7045:56:9" }, { "attributes": { "assignments": [ 4839 ] }, "children": [ { "attributes": { "constant": false, "name": "callerBalance", "scope": 4919, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4838, "name": "ElementaryTypeName", "src": "7111:7:9" } ], "id": 4839, "name": "VariableDeclaration", "src": "7111:21:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "balanceOf", "referencedDeclaration": 5640, "type": "function (address) view external returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4840, "name": "Identifier", "src": "7135:13:9" } ], "id": 4841, "name": "MemberAccess", "src": "7135:23:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4842, "name": "Identifier", "src": "7159:3:9" } ], "id": 4843, "name": "MemberAccess", "src": "7159:10:9" } ], "id": 4844, "name": "FunctionCall", "src": "7135:35:9" } ], "id": 4845, "name": "VariableDeclarationStatement", "src": "7111:59:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_036daf442604eb31ad74da9a69fe5dbd62aabfebb2991e7c7d29a1f2fe39919a", "typeString": "literal_string \"Caller balance too high\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4846, "name": "Identifier", "src": "7180:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "<", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4839, "type": "uint256", "value": "callerBalance" }, "id": 4847, "name": "Identifier", "src": "7201:13:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "maxBalance", "referencedDeclaration": 4411, "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4848, "name": "Identifier", "src": "7215:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4849, "name": "Identifier", "src": "7226:9:9" } ], "id": 4850, "name": "IndexAccess", "src": "7215:21:9" } ], "id": 4851, "name": "MemberAccess", "src": "7215:32:9" } ], "id": 4852, "name": "BinaryOperation", "src": "7201:46:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "43616c6c65722062616c616e636520746f6f2068696768", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Caller balance too high\"", "value": "Caller balance too high" }, "id": 4853, "name": "Literal", "src": "7261:25:9" } ], "id": 4854, "name": "FunctionCall", "src": "7180:116:9" } ], "id": 4855, "name": "ExpressionStatement", "src": "7180:116:9" }, { "attributes": { "assignments": [ 4857 ] }, "children": [ { "attributes": { "constant": false, "name": "ourBalance", "scope": 4919, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4856, "name": "ElementaryTypeName", "src": "7306:7:9" } ], "id": 4857, "name": "VariableDeclaration", "src": "7306:18:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "balanceOf", "referencedDeclaration": 5640, "type": "function (address) view external returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4858, "name": "Identifier", "src": "7327:13:9" } ], "id": 4859, "name": "MemberAccess", "src": "7327:23:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4860, "name": "ElementaryTypeNameExpression", "src": "7351:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4861, "name": "Identifier", "src": "7359:4:9" } ], "id": 4862, "name": "FunctionCall", "src": "7351:13:9" } ], "id": 4863, "name": "FunctionCall", "src": "7327:38:9" } ], "id": 4864, "name": "VariableDeclarationStatement", "src": "7306:59:9" }, { "attributes": { "falseBody": null }, "children": [ { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "&&", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "<", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4857, "type": "uint256", "value": "ourBalance" }, "id": 4865, "name": "Identifier", "src": "7378:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4866, "name": "Identifier", "src": "7389:6:9" } ], "id": 4867, "name": "BinaryOperation", "src": "7378:17:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "isMinter", "referencedDeclaration": 5608, "type": "function (address) view external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4868, "name": "Identifier", "src": "7399:13:9" } ], "id": 4869, "name": "MemberAccess", "src": "7399:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4870, "name": "ElementaryTypeNameExpression", "src": "7422:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4871, "name": "Identifier", "src": "7430:4:9" } ], "id": 4872, "name": "FunctionCall", "src": "7422:13:9" } ], "id": 4873, "name": "FunctionCall", "src": "7399:37:9" } ], "id": 4874, "name": "BinaryOperation", "src": "7378:58:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "mint", "referencedDeclaration": 5576, "type": "function (address,uint256) external" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4875, "name": "Identifier", "src": "7507:13:9" } ], "id": 4877, "name": "MemberAccess", "src": "7507:18:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4878, "name": "ElementaryTypeNameExpression", "src": "7526:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4879, "name": "Identifier", "src": "7534:4:9" } ], "id": 4880, "name": "FunctionCall", "src": "7526:13:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "-", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4881, "name": "Identifier", "src": "7540:6:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4857, "type": "uint256", "value": "ourBalance" }, "id": 4882, "name": "Identifier", "src": "7549:10:9" } ], "id": 4883, "name": "BinaryOperation", "src": "7540:19:9" } ], "id": 4884, "name": "FunctionCall", "src": "7507:53:9" } ], "id": 4885, "name": "ExpressionStatement", "src": "7507:53:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "=", "type": "uint256" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4857, "type": "uint256", "value": "ourBalance" }, "id": 4886, "name": "Identifier", "src": "7574:10:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "balanceOf", "referencedDeclaration": 5640, "type": "function (address) view external returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4887, "name": "Identifier", "src": "7587:13:9" } ], "id": 4888, "name": "MemberAccess", "src": "7587:23:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4889, "name": "ElementaryTypeNameExpression", "src": "7611:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4890, "name": "Identifier", "src": "7619:4:9" } ], "id": 4891, "name": "FunctionCall", "src": "7611:13:9" } ], "id": 4892, "name": "FunctionCall", "src": "7587:38:9" } ], "id": 4893, "name": "Assignment", "src": "7574:51:9" } ], "id": 4894, "name": "ExpressionStatement", "src": "7574:51:9" } ], "id": 4895, "name": "Block", "src": "7437:199:9" } ], "id": 4896, "name": "IfStatement", "src": "7375:261:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6b90a513fa74c2a8dc35fe1591468e10fc67c299dc0f325ea992d29212514d24", "typeString": "literal_string \"Not enough reserves\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4897, "name": "Identifier", "src": "7645:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": ">=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4857, "type": "uint256", "value": "ourBalance" }, "id": 4898, "name": "Identifier", "src": "7666:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4899, "name": "Identifier", "src": "7678:6:9" } ], "id": 4900, "name": "BinaryOperation", "src": "7666:18:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "4e6f7420656e6f756768207265736572766573", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Not enough reserves\"", "value": "Not enough reserves" }, "id": 4901, "name": "Literal", "src": "7698:21:9" } ], "id": 4902, "name": "FunctionCall", "src": "7645:84:9" } ], "id": 4903, "name": "ExpressionStatement", "src": "7645:84:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "transfer", "referencedDeclaration": 5649, "type": "function (address,uint256) external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4833, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4904, "name": "Identifier", "src": "7739:13:9" } ], "id": 4906, "name": "MemberAccess", "src": "7739:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4907, "name": "Identifier", "src": "7762:3:9" } ], "id": 4908, "name": "MemberAccess", "src": "7762:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4909, "name": "Identifier", "src": "7773:6:9" } ], "id": 4910, "name": "FunctionCall", "src": "7739:41:9" } ], "id": 4911, "name": "ExpressionStatement", "src": "7739:41:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4447, "type": "function (address,address,uint256)", "value": "TokensDispensed" }, "id": 4912, "name": "Identifier", "src": "7795:15:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4791, "type": "address", "value": "datatoken" }, "id": 4913, "name": "Identifier", "src": "7811:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4914, "name": "Identifier", "src": "7822:3:9" } ], "id": 4915, "name": "MemberAccess", "src": "7822:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4793, "type": "uint256", "value": "amount" }, "id": 4916, "name": "Identifier", "src": "7834:6:9" } ], "id": 4917, "name": "FunctionCall", "src": "7795:46:9" } ], "id": 4918, "name": "EmitStatement", "src": "7790:51:9" } ], "id": 4919, "name": "Block", "src": "6613:1235:9" } ], "id": 4920, "name": "FunctionDefinition", "src": "6544:1304:9" }, { "attributes": { "documentation": "@dev ownerWithdraw\n Allow owner to withdraw all datatokens in this dispenser balance\n@param datatoken refers to datatoken address.", "implemented": true, "isConstructor": false, "kind": "function", "modifiers": [ null ], "name": "ownerWithdraw", "scope": 4986, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, "children": [ { "children": [ { "attributes": { "constant": false, "name": "datatoken", "scope": 4981, "stateVariable": false, "storageLocation": "default", "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "address", "stateMutability": "nonpayable", "type": "address" }, "id": 4921, "name": "ElementaryTypeName", "src": "8049:7:9" } ], "id": 4922, "name": "VariableDeclaration", "src": "8049:17:9" } ], "id": 4923, "name": "ParameterList", "src": "8048:19:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4924, "name": "ParameterList", "src": "8076:0:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06ebfe378f7fe772505ae89070020ed35d339723d05a163f9140463cf1c3e2e1", "typeString": "literal_string \"Invalid token contract address\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4925, "name": "Identifier", "src": "8086:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "!=", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4922, "type": "address", "value": "datatoken" }, "id": 4926, "name": "Identifier", "src": "8107:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": true, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4927, "name": "ElementaryTypeNameExpression", "src": "8120:7:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4928, "name": "Literal", "src": "8128:1:9" } ], "id": 4929, "name": "FunctionCall", "src": "8120:10:9" } ], "id": 4930, "name": "BinaryOperation", "src": "8107:23:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c696420746f6b656e20636f6e74726163742061646472657373", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid token contract address\"", "value": "Invalid token contract address" }, "id": 4931, "name": "Literal", "src": "8144:32:9" } ], "id": 4932, "name": "FunctionCall", "src": "8086:100:9" } ], "id": 4933, "name": "ExpressionStatement", "src": "8086:100:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_110461b12e459dc76e692e7a47f9621cf45c7d48020c3c7b2066107cdf1f52ae", "typeString": "literal_string \"Invalid owner\"" } ], "overloadedDeclarations": [ 7124, 7125 ], "referencedDeclaration": 7125, "type": "function (bool,string memory) pure", "value": "require" }, "id": 4934, "name": "Identifier", "src": "8196:7:9" }, { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": "==", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "member_name": "owner", "referencedDeclaration": 4405, "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "type": "struct Dispenser.DataToken storage ref" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4416, "type": "mapping(address => struct Dispenser.DataToken storage ref)", "value": "datatokens" }, "id": 4935, "name": "Identifier", "src": "8217:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4922, "type": "address", "value": "datatoken" }, "id": 4936, "name": "Identifier", "src": "8228:9:9" } ], "id": 4937, "name": "IndexAccess", "src": "8217:21:9" } ], "id": 4938, "name": "MemberAccess", "src": "8217:27:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4939, "name": "Identifier", "src": "8248:3:9" } ], "id": 4940, "name": "MemberAccess", "src": "8248:10:9" } ], "id": 4941, "name": "BinaryOperation", "src": "8217:41:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "496e76616c6964206f776e6572", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "string", "type": "literal_string \"Invalid owner\"", "value": "Invalid owner" }, "id": 4942, "name": "Literal", "src": "8272:15:9" } ], "id": 4943, "name": "FunctionCall", "src": "8196:101:9" } ], "id": 4944, "name": "ExpressionStatement", "src": "8196:101:9" }, { "attributes": { "assignments": [ 4946 ] }, "children": [ { "attributes": { "constant": false, "name": "tokenInstance", "scope": 4980, "stateVariable": false, "storageLocation": "default", "type": "contract IERC20Template", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "contractScope": null, "name": "IERC20Template", "referencedDeclaration": 5658, "type": "contract IERC20Template" }, "id": 4945, "name": "UserDefinedTypeName", "src": "8307:14:9" } ], "id": 4946, "name": "VariableDeclaration", "src": "8307:28:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "contract IERC20Template", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 5658, "type": "type(contract IERC20Template)", "value": "IERC20Template" }, "id": 4947, "name": "Identifier", "src": "8338:14:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4922, "type": "address", "value": "datatoken" }, "id": 4948, "name": "Identifier", "src": "8353:9:9" } ], "id": 4949, "name": "FunctionCall", "src": "8338:25:9" } ], "id": 4950, "name": "VariableDeclarationStatement", "src": "8307:56:9" }, { "attributes": { "assignments": [ 4952 ] }, "children": [ { "attributes": { "constant": false, "name": "ourBalance", "scope": 4980, "stateVariable": false, "storageLocation": "default", "type": "uint256", "value": null, "visibility": "internal" }, "children": [ { "attributes": { "name": "uint256", "type": "uint256" }, "id": 4951, "name": "ElementaryTypeName", "src": "8373:7:9" } ], "id": 4952, "name": "VariableDeclaration", "src": "8373:18:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "uint256", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "balanceOf", "referencedDeclaration": 5640, "type": "function (address) view external returns (uint256)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4946, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4953, "name": "Identifier", "src": "8394:13:9" } ], "id": 4954, "name": "MemberAccess", "src": "8394:23:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "address payable", "type_conversion": true }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Dispenser_$4986", "typeString": "contract Dispenser" } ], "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "type": "type(address)", "value": "address" }, "id": 4955, "name": "ElementaryTypeNameExpression", "src": "8418:7:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7165, "type": "contract Dispenser", "value": "this" }, "id": 4956, "name": "Identifier", "src": "8426:4:9" } ], "id": 4957, "name": "FunctionCall", "src": "8418:13:9" } ], "id": 4958, "name": "FunctionCall", "src": "8394:38:9" } ], "id": 4959, "name": "VariableDeclarationStatement", "src": "8373:59:9" }, { "attributes": { "falseBody": null }, "children": [ { "attributes": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "operator": ">", "type": "bool" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4952, "type": "uint256", "value": "ourBalance" }, "id": 4960, "name": "Identifier", "src": "8445:10:9" }, { "attributes": { "argumentTypes": null, "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "subdenomination": null, "token": "number", "type": "int_const 0", "value": "0" }, "id": 4961, "name": "Literal", "src": "8456:1:9" } ], "id": 4962, "name": "BinaryOperation", "src": "8445:12:9" }, { "children": [ { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "bool", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "transfer", "referencedDeclaration": 5649, "type": "function (address,uint256) external returns (bool)" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4946, "type": "contract IERC20Template", "value": "tokenInstance" }, "id": 4963, "name": "Identifier", "src": "8472:13:9" } ], "id": 4965, "name": "MemberAccess", "src": "8472:22:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4966, "name": "Identifier", "src": "8495:3:9" } ], "id": 4967, "name": "MemberAccess", "src": "8495:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4952, "type": "uint256", "value": "ourBalance" }, "id": 4968, "name": "Identifier", "src": "8506:10:9" } ], "id": 4969, "name": "FunctionCall", "src": "8472:45:9" } ], "id": 4970, "name": "ExpressionStatement", "src": "8472:45:9" }, { "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "isStructConstructorCall": false, "lValueRequested": false, "names": [ null ], "type": "tuple()", "type_conversion": false }, "children": [ { "attributes": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "overloadedDeclarations": [ null ], "referencedDeclaration": 4455, "type": "function (address,address,uint256)", "value": "OwnerWithdrawed" }, "id": 4971, "name": "Identifier", "src": "8536:15:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4922, "type": "address", "value": "datatoken" }, "id": 4972, "name": "Identifier", "src": "8552:9:9" }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "member_name": "sender", "referencedDeclaration": null, "type": "address payable" }, "children": [ { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 7121, "type": "msg", "value": "msg" }, "id": 4973, "name": "Identifier", "src": "8563:3:9" } ], "id": 4974, "name": "MemberAccess", "src": "8563:10:9" }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], "referencedDeclaration": 4952, "type": "uint256", "value": "ourBalance" }, "id": 4975, "name": "Identifier", "src": "8575:10:9" } ], "id": 4976, "name": "FunctionCall", "src": "8536:50:9" } ], "id": 4977, "name": "EmitStatement", "src": "8531:55:9" } ], "id": 4978, "name": "Block", "src": "8458:139:9" } ], "id": 4979, "name": "IfStatement", "src": "8442:155:9" } ], "id": 4980, "name": "Block", "src": "8076:527:9" } ], "id": 4981, "name": "FunctionDefinition", "src": "8026:577:9" }, { "attributes": { "documentation": null, "implemented": true, "isConstructor": false, "kind": "fallback", "modifiers": [ null ], "name": "", "scope": 4986, "stateMutability": "payable", "superFunction": null, "visibility": "external" }, "children": [ { "attributes": { "parameters": [ null ] }, "children": [], "id": 4982, "name": "ParameterList", "src": "8616:2:9" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4983, "name": "ParameterList", "src": "8636:0:9" }, { "attributes": { "statements": [ null ] }, "children": [], "id": 4984, "name": "Block", "src": "8636:45:9" } ], "id": 4985, "name": "FunctionDefinition", "src": "8608:73:9" } ], "id": 4986, "name": "ContractDefinition", "src": "231:8452:9" } ], "id": 4987, "name": "SourceUnit", "src": "0:8683:9" }, "compiler": { "name": "solc", "version": "0.5.7+commit.6da8b019.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.3.4", "updatedAt": "2021-04-26T10:46:14.822Z", "devdoc": { "methods": { "acceptMinter(address)": { "details": "acceptMinter Accepts Minter role (existing datatoken minter has to call datatoken.proposeMinter(dispenserAddress) first)", "params": { "datatoken": "refers to datatoken address." } }, "activate(address,uint256,uint256)": { "details": "activate Activate a new dispenser", "params": { "datatoken": "refers to datatoken address.", "maxBalance": "- max balance of requester.", "maxTokens": "- max tokens to dispense" } }, "deactivate(address)": { "details": "deactivate Deactivate an existing dispenser", "params": { "datatoken": "refers to datatoken address." } }, "dispense(address,uint256)": { "details": "dispense Dispense datatokens to caller. The dispenser must be active, hold enough DT (or be able to mint more) and respect maxTokens/maxBalance requirements", "params": { "datatoken": "amount of datatokens required." } }, "ownerWithdraw(address)": { "details": "ownerWithdraw Allow owner to withdraw all datatokens in this dispenser balance", "params": { "datatoken": "refers to datatoken address." } }, "removeMinter(address)": { "details": "removeMinter Removes Minter role and proposes the owner as a new minter (the owner has to call approveMinter after this)", "params": { "datatoken": "refers to datatoken address." } }, "status(address)": { "details": "status Get information about a datatoken dispenser", "params": { "datatoken": "refers to datatoken address." }, "return": "active - if the dispenser is active for this datatokenowner - owner of this dispenserminterApproved - if the dispenser is a minter for this datatokenisTrueMinter - check the datatoken contract if this contract is really a mintermaxTokens - max tokens to dispensemaxBalance - max balance of requester. If the balance is higher, the dispense is rejectedbalance - internal balance of the contract (if any)" } } }, "userdoc": { "methods": {} } }