{
  "contractName": "UBIScheme",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "contract Identity",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "contract FirstClaimPool",
          "name": "_firstClaimPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_periodStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_periodEnd",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxInactiveDays",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_cycleLength",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ActivatedUser",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "fished_account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "claimAmount",
          "type": "uint256"
        }
      ],
      "name": "InactiveUserFished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "SchemeEnded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "SchemeStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        }
      ],
      "name": "TotalFished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "day",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "dailyUbi",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "UBICalculated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "claimer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "UBIClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "day",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "pool",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cycleLength",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "dailyUBIPool",
          "type": "uint256"
        }
      ],
      "name": "UBICycleCalculated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "claimers",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "claimamount",
          "type": "uint256"
        }
      ],
      "name": "UBIEnded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "UBIStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prevBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "WithdrawFromDao",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "activeUsersCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "claimDistribution",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentCycleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentDay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "cycleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dailyCyclePool",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "dailyUBIHistory",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasWithdrawn",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "openAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dailyUbi",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "firstClaimPool",
      "outputs": [
        {
          "internalType": "contract FirstClaimPool",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "fishedUsersAddresses",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "day",
          "type": "uint256"
        }
      ],
      "name": "getClaimAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "day",
          "type": "uint256"
        }
      ],
      "name": "getClaimerCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDailyStats",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract Identity",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "scheme",
          "type": "address"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "iterationGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastClaimed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lastWithdrawDay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxInactiveDays",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "periodEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "periodStart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "setAvatar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Identity",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "setIdentity",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "shouldWithdrawFromDAO",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startOfCycle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalClaimsPerUser",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newLength",
          "type": "uint256"
        }
      ],
      "name": "setCycleLength",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentDayInCycle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "setDay",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasClaimed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isNotNewUser",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isActiveUser",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkEntitlement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "claim",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "fish",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_accounts",
          "type": "address[]"
        }
      ],
      "name": "fishMulti",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "start",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_shouldWithdraw",
          "type": "bool"
        }
      ],
      "name": "setShouldWithdrawFromDAO",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "end",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "prevUBIScheme",
          "type": "address"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"},{\"internalType\":\"contract Identity\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"contract FirstClaimPool\",\"name\":\"_firstClaimPool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_periodEnd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxInactiveDays\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_cycleLength\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"ActivatedUser\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fished_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"claimAmount\",\"type\":\"uint256\"}],\"name\":\"InactiveUserFished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"SchemeEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"SchemeStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"name\":\"TotalFished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"day\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dailyUbi\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"UBICalculated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UBIClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"day\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pool\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cycleLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dailyUBIPool\",\"type\":\"uint256\"}],\"name\":\"UBICycleCalculated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"claimers\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"claimamount\",\"type\":\"uint256\"}],\"name\":\"UBIEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"UBIStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prevBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"WithdrawFromDao\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"activeUsersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"checkEntitlement\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"claimDistribution\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentCycleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentDay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentDayInCycle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cycleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dailyCyclePool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dailyUBIHistory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"hasWithdrawn\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"openAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dailyUbi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"end\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"firstClaimPool\",\"outputs\":[{\"internalType\":\"contract FirstClaimPool\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"fish\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_accounts\",\"type\":\"address[]\"}],\"name\":\"fishMulti\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"fishedUsersAddresses\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"day\",\"type\":\"uint256\"}],\"name\":\"getClaimAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"day\",\"type\":\"uint256\"}],\"name\":\"getClaimerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getDailyStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"identity\",\"outputs\":[{\"internalType\":\"contract Identity\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isActiveUser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNotNewUser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"scheme\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"iterationGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastWithdrawDay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxInactiveDays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"periodEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"periodStart\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"}],\"name\":\"setAvatar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newLength\",\"type\":\"uint256\"}],\"name\":\"setCycleLength\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setDay\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Identity\",\"name\":\"_identity\",\"type\":\"address\"}],\"name\":\"setIdentity\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_shouldWithdraw\",\"type\":\"bool\"}],\"name\":\"setShouldWithdrawFromDAO\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"shouldWithdrawFromDAO\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"startOfCycle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalClaimsPerUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevUBIScheme\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"checkEntitlement()\":{\"details\":\"Checks the amount which the sender address is eligible to claim for, regardless if they have been whitelisted or not. In case the user is active, then the current day must be equal to the actual day, i.e. claim or fish has already been executed today.\",\"return\":\"The amount of GD tokens the address can claim.\"},\"claim()\":{\"details\":\"Function for claiming UBI. Requires contract to be active and claimer to be whitelisted. Calls distributionFormula, calculats the amount the caller can claim, and transfers the amount to the caller. Emits the address of caller and amount claimed.\",\"return\":\"A bool indicating if UBI was claimed\"},\"constructor\":{\"details\":\"Constructor\",\"params\":{\"_avatar\":\"The avatar of the DAO\",\"_firstClaimPool\":\"A pool for GD to give out to activated users\",\"_identity\":\"The identity contract\",\"_maxInactiveDays\":\"Days of grace without claiming request\",\"_periodEnd\":\"The time from when the contract can end\",\"_periodStart\":\"The time from when the contract can start\"}},\"currentDayInCycle()\":{\"details\":\"returns the day count since start of current cycle\"},\"fish(address)\":{\"details\":\"In order to update users from active to inactive, we give out incentive to people to update the status of inactive users, this action is called \\\"Fishing\\\". Anyone can send a tx to the contract to mark inactive users. The \\\"fisherman\\\" receives a reward equal to the daily UBI (ie instead of the \\u201cfished\\u201d user). User that \\u201clast claimed\\u201d > 14 can be \\\"fished\\\" and made inactive (reduces active users count by one). Requires contract to be active.\",\"params\":{\"_account\":\"to fish\"},\"return\":\"A bool indicating if UBI was fished\"},\"fishMulti(address[])\":{\"details\":\"executes `fish` with multiple addresses. emits the number of users from the given array who actually been tried being fished.\",\"params\":{\"_accounts\":\"to fish\"},\"return\":\"A bool indicating if all the UBIs were fished\"},\"hasClaimed(address)\":{\"details\":\"Checks if the given account has claimed today\",\"params\":{\"account\":\"to check\"},\"return\":\"True if the given user has already claimed today\"},\"isActiveUser(address)\":{\"details\":\"Checks weather the given address is owned by an active user. A registered user is a user that claimed at least one time. An active user is a user that claimed at least one time but claimed at least one time in the last `maxInactiveDays` days. A user that has not claimed for `maxInactiveDays` is an inactive user.\",\"params\":{\"_account\":\"to check\"},\"return\":\"True for active user\"},\"isNotNewUser(address)\":{\"details\":\"Checks if the given account has been owned by a registered user.\",\"params\":{\"_account\":\"to check\"},\"return\":\"True for an existing user. False for a new user\"},\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"isRegistered()\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"isRegistered(address)\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"setAvatar(address)\":{\"details\":\"Function to set a new avatar and controller for scheme can only be done by owner of scheme\"},\"setCycleLength(uint256)\":{\"details\":\"sets the ubi calculation cycle length\",\"params\":{\"_newLength\":\"the new length in days\"}},\"setShouldWithdrawFromDAO(bool)\":{\"details\":\"Sets whether to also withdraw GD from avatar for UBI\",\"params\":{\"_shouldWithdraw\":\"boolean if to withdraw\"}},\"start()\":{\"details\":\"Start function. Adds this contract to identity as a feeless scheme and adds permissions to FirstClaimPool Can only be called if scheme is registered\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}}}},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"},\"setDay()\":{\"notice\":\"dev Sets the currentDay variable to amount of days since start of contract.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/UBIScheme.sol\":\"UBIScheme\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/ActivePeriod.sol\":{\"keccak256\":\"0xd6b17fe8c789a03e87c80046319caee9fc9c9b5ded9008b09a550027c205c5ab\",\"urls\":[\"bzz-raw://0f77e8dc5f6abeefc9a2e185c257516f7f0266ae2781dd67c18daf1aac667daf\",\"dweb:/ipfs/QmbeRqLP2MvTZifqPBSK3PUDh8TjC1RaTA8b1dRRAXahmJ\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol\":{\"keccak256\":\"0x2ac93f891a65aa60b93e2b27552850dfa459b88f5a19edc29bb5bab0cc4f3eaa\",\"urls\":[\"bzz-raw://bddb94bc0230d959d2362887a253a47b91f0de6804cba8e4569a7cac47c39b5a\",\"dweb:/ipfs/QmTdkPQHRdzxJ7D7pi9cowLgYY9wVja416dhBwCsdtPEv5\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeelessScheme.sol\":{\"keccak256\":\"0x7c542d44cbd864ee0ddecbc5016d9d7eb9ce65ab463fdd9f21eb8ce3c6ffc8ea\",\"urls\":[\"bzz-raw://4753dd823c0b0cbe7d7d02e1df64ace07d7a163af3aaff12697aee70a1b45f2f\",\"dweb:/ipfs/QmPkKeH88M3f6UbHphayUbjEBNV4rmoogtDmVundzBKbFK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FormulaHolder.sol\":{\"keccak256\":\"0xb3c0d3bc21e71497784e1be11698ff501ee11545c3106bec2cae2e8af1bacd9b\",\"urls\":[\"bzz-raw://783b4e28b67231de0fbbe48e58f43f69db3f98fd7f75668edce145a55a9b5b17\",\"dweb:/ipfs/QmdeyRfeix3PGfaXqtRQpH1sjmjFpdtuGaPwnvRn7nHAWd\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/SchemeGuard.sol\":{\"keccak256\":\"0x32e1b2a172e2c22a6aa757bfcb0722cc67f64c5c2e48df3dec2737903516d565\",\"urls\":[\"bzz-raw://bee57a8eba08348e93a0c18f3ab534e67865c0fa27afe27f5cf234bd5f248915\",\"dweb:/ipfs/Qmd8aveHWcUkYWMyJrJRZPyVXj8MAMBfpBFo6g4Z2VJeo3\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/UBI.sol\":{\"keccak256\":\"0x19958afd1c28980b55c601025ab027ea196846e98357a528aab7034f76f7e08a\",\"urls\":[\"bzz-raw://f24ee7cd5d221d29cff4a99020cd428eb164fec7a109acbe3bb0aef614b5ef37\",\"dweb:/ipfs/QmSyyXLQ8Bsi3kq3vySm3sfpyRvyH93mQ4HPN1gorRXLZp\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol\":{\"keccak256\":\"0x282184478f1d618d3523b28a84a7f7003dfdc99cad120e5e358d2cce1f5fb491\",\"urls\":[\"bzz-raw://67e17ecb57b24c4fb801abc2c52c3148af3b967e28da4fb7e074d18efb7a57c1\",\"dweb:/ipfs/QmfZ8jXhdTHtxr3gfByRj4HnXnGynX7SLZWWGR8k768aGB\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityAdminRole.sol\":{\"keccak256\":\"0x8e82c45eefe0da77d017144dfad12602c68124297035937901cdd08ce48c57ff\",\"urls\":[\"bzz-raw://e20e606342b3b35f41a081294cf3f716fe7e27e81d3090daa37c5208f4ef4bc3\",\"dweb:/ipfs/QmVEhHpiwVsksnPyHkfNa5LpTBLxoP9kj5NRZUBv456ewK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol\":{\"keccak256\":\"0xcc395c0e8f812201b5ed1f45e7272120ee5ffe73bfe13e325dfd872aef235b22\",\"urls\":[\"bzz-raw://58f93e4b9f48ec31ac151208e4f9e6b356cc23dfc9585d846bc09bf35d6ff7be\",\"dweb:/ipfs/QmdxJHUCaFx8N66kkDhYdA4k6d2V91yBRG6sombuPxBq7X\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677/ERC677.sol\":{\"keccak256\":\"0x8360b9e356df8584d95990bb7e772342b30d9e22b160f7c875fbca5c0b87453c\",\"urls\":[\"bzz-raw://97cc6e5586cedcd49462cc465a2a8fc5063d7ec6cb9533f4e0099969a75bd4b2\",\"dweb:/ipfs/QmXw6y4iXfqyJHDRrHdd5ofQ6E4cuHDw4LiYupReJ1rCBc\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677/ERC677Receiver.sol\":{\"keccak256\":\"0xc5683b28527097379ed090b28bb46e17a50a2c57ddcb3c7e028fcd04ddc64aef\",\"urls\":[\"bzz-raw://639f6b6cf65382faea738e6326d6aeb289b8b030cf02f40c54bc45ec098eda6d\",\"dweb:/ipfs/QmQi7dFcKiwUxSbzhus4CxFTdNJvUsfiqY6i3bD4RdMQrn\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677BridgeToken.sol\":{\"keccak256\":\"0x014fa09dca773b1406855e628687be50c1eb129894f45a8b5c9fc709d826968d\",\"urls\":[\"bzz-raw://23c6491c0c26471315010687d785a3724ae33198be6ed39828d1a4f7e6873cb4\",\"dweb:/ipfs/QmW62FXHtLdNGzB8Nq9XwmwHp6Jn8jgbAVyrU2j7c7w6By\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677Token.sol\":{\"keccak256\":\"0x553a103b911d77cecb2ce3f355b2370c4a23eb070593d7c8eb46f33e3a5ff141\",\"urls\":[\"bzz-raw://e37438ce280964498b77f63bbe4d1f25c55ff4c178925447a70decceda06e46c\",\"dweb:/ipfs/QmbqCLhWjZqpFBnUVb3H7LkEbAaVmhf76Ln14oWnGimYGM\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol\":{\"keccak256\":\"0x7b91359f6912641c7dbfeced9a5c47454acce7c2cab9205d00b8049d228d7b78\",\"urls\":[\"bzz-raw://3a09bc6936d0179e2e5be2687446532d63135bc537f7ab246c6a1101d4849c1f\",\"dweb:/ipfs/QmNshqF7Xu7UX8BryKYRbnRQdTfytPappxkHq5xMxF5vpE\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/FirstClaimPool.sol\":{\"keccak256\":\"0x9d993de183f6574702058a2e9c572b33db6057cee66ee5b094b95d959423a151\",\"urls\":[\"bzz-raw://47194a2daf7bd73d77e7ef5dfc8c45c40e13f7788e3c8c06d1fa8f8bdc85fc8e\",\"dweb:/ipfs/Qmd2QzqNkZ77BLKxyKAuhUJ3uH716nK8NxsXYbN7vNccfk\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/UBIScheme.sol\":{\"keccak256\":\"0x8ec83267509a43752de03994c9695ae1b069e9c61bcb0a04db211dce9d9e62b0\",\"urls\":[\"bzz-raw://1151cb597264dc0b6e230578b48c2721569fdbd168e18432c5f57c9054be3f7c\",\"dweb:/ipfs/QmauAP1DJxYw6ZAJaMbLXSutPvPXFhcvoArVTEuzsfbryj\"]},\"@daostack/arc/contracts/controller/Avatar.sol\":{\"keccak256\":\"0x4e4fb9d3bc21f42fbfc6a01e9f8aa483a59e9f447b0d604f55b587a81ec09ef4\",\"urls\":[\"bzz-raw://9d3c1c7575cf6075ea1d89921f09b9b8e322b208dacaf0446cd4f64506c999f0\",\"dweb:/ipfs/QmVGDDHAR2ByuQpbgV7BBKXGEAcbaWvejpEZYzHgaagBFK\"]},\"@daostack/arc/contracts/controller/ControllerInterface.sol\":{\"keccak256\":\"0x933e92612c90f292c7b59908958b003f1a13d90b97bed0572b566353c20974dc\",\"urls\":[\"bzz-raw://ce1fcf85b744fcce2dbd4205e3943e9b4ec36a5f0330d4bbf61e65f1a3e0e470\",\"dweb:/ipfs/QmUWiLkBDdekhpy93nTzBtxDHL6yNh6sTUM9G8VbsHcBzy\"]},\"@daostack/arc/contracts/controller/DAOToken.sol\":{\"keccak256\":\"0x9b213e4e3ceeffcfc1c962a43b70b8d763d8091a2dd713fc1989b97bb68786e6\",\"urls\":[\"bzz-raw://51d1d6e85fd90f45395a16b7a3c703c4636e836041f2a13f806e4222ef2e59c1\",\"dweb:/ipfs/QmQjeCeFf7TJzsYjT5scyZUDDixBA8Yy8YppgBuxcKPDnP\"]},\"@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol\":{\"keccak256\":\"0xc006c4591ec10b845a56e13f6791db2c428610953034686d52b2a934b6c8f36f\",\"urls\":[\"bzz-raw://19495cd88280e54d7ddcd043ffeff75e6d3777a0c42debcd61cae448e9497ea0\",\"dweb:/ipfs/QmYxWz7CgFmmddrcVXJKfob5Ktwykc2imNVUwLSR5WR8bJ\"]},\"@daostack/arc/contracts/libs/SafeERC20.sol\":{\"keccak256\":\"0xf6727d432f67046145b078f40c1cc4f6be7b0d12a6678ecaf457edf7550d244c\",\"urls\":[\"bzz-raw://5dba7734c4fed446c084a707761cbc66ba22b8b93ef53c8d4a22a76b6e271690\",\"dweb:/ipfs/QmP2VpPKUqLh4ZZs6LaxHVpCN1zCmiorygL9bMub4mbYCw\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0x3199053db04cdae6c9b4380921a4a4ee720b568d6a9660883b29d25fbec31bc0\",\"urls\":[\"bzz-raw://1b0ff368e21d6007c06e4cfb286fe59d7d7d3ec06283300c9be2153ba11fa93a\",\"dweb:/ipfs/QmRPq2wZM4RAcbj31dP34GCr1CSy2qy3JqfXEkdVie4HLT\"]},\"openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzz-raw://9c03592a9e6b1377e401b74eccf175a250232b5a341347d3fc5cb50e9bc86ba2\",\"dweb:/ipfs/QmYAr1yXT89hNUMJ37aiBpD9HtYfBDqmueVCzphRuuU7oZ\"]},\"openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzz-raw://bbdbf9d3754fcdcc85aec0432fabcec914317b1c2081b43753442ed53853a34a\",\"dweb:/ipfs/QmVHWQBn5xQkQEHhyGNEeS5gjjALZEk5ZfcjFt7kL6MoLy\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzz-raw://f40c91ca270bdc9b156f339081a0fc2bbcf73cf5f62b8c73ba555df753ff6619\",\"dweb:/ipfs/QmT8y2VVjGaFdGphpcXrgvdPi2EgF9LuCDgJiJ89LvpFRV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0xa3e68fd7f987c8fbdaf4867d428a69a15f3cf2f69709a5b0a0fbef750b0e6fbc\",\"urls\":[\"bzz-raw://50b1ff986d3b2793850a66c8429d9886fdfb134b1509b3e98714e3e2a71e24f5\",\"dweb:/ipfs/QmSQBYPeY9tbR3ciGRNQqvcWKnNiuxtVMq2MsPWpLwuGGm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x37b840977505e5f6d74bc8fa3d0217facc7913d0ecf064da3e3b26494acd37de\",\"urls\":[\"bzz-raw://7456513521bae915089dfd5879b685e47f3f180ad9ffe24cc3b19275b1da28ed\",\"dweb:/ipfs/QmbM1avKkyyTHEeTs3CqheyZwgAMNzVi3iDudqBdUJ2WPM\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x6080604052600580546001600160a01b0319169055620249f0600d553480156200002857600080fd5b506040516200392138038062003921833981810160405260e08110156200004e57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919086866000868683858181858582818310620000c85760405162461bcd60e51b8152600401808060200182810382526026815260200180620038fb6026913960400191505060405180910390fd5b600092835560019190915560028054610100600160a81b0319166101006001600160a01b03938416021760ff1916905560038054336001600160a01b03199091161790819055604051911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600480546001600160a01b0319166001600160a01b0383811691909117918290551615620001f3576004805460408051638da5cb5b60e01b815290516001600160a01b0390921692638da5cb5b928282019260209290829003018186803b158015620001a557600080fd5b505afa158015620001ba573d6000803e3d6000fd5b505050506040513d6020811015620001d157600080fd5b5051600580546001600160a01b0319166001600160a01b039092169190911790555b506001600160a01b03811662000250576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600680546001600160a01b039092166001600160a01b031990921691909117905550505060079190915550505081620002d0576040805162461bcd60e51b815260206004820181905260248201527f4d617820696e61637469766520646179732063616e6e6f74206265207a65726f604482015290519081900360640190fd5b601091909155601680546001600160a01b039095166001600160a01b03199095169490941790935550506011805460ff1916905560125550506135e280620003196000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80638081cbbd1161015c578063c1337508116100ce578063dddc361611610087578063dddc36161461067e578063de1de3a014610686578063eac471a0146106a5578063eda4e6d6146106ad578063efbe1c1c146106b5578063f2fde38b146106bd5761028a565b8063c13375081461054f578063c3c5a547146105f0578063c7a76adf14610616578063cc054dfc14610633578063cef6360014610659578063d7c4cbb8146106765761028a565b80639dc2c033116101205780639dc2c03314610501578063a21f698a14610509578063b656223d1461052f578063ba07541014610537578063be9a65551461053f578063c033abf2146105475761028a565b80638081cbbd146104d9578063884a41be146104e15780638da5cb5b146104e95780638f32d59b146104f157806398d6621b146104f95761028a565b80633d84ceca11610200578063560796d1116101b9578063560796d11461043d5780635c9302c9146104755780635d5bf1781461047d578063715018a6146104a357806373b2e80e146104ab578063741470ac146104d15761028a565b80633d84ceca146103bc5780634202d214146103d9578063456ac1c2146103ff5780634e71d92d14610407578063506ec0951461040f5780635231e2f0146104175761028a565b80631bbc644c116102525780631bbc644c1461033e5780631d8f5ea914610378578063223668441461038057806322b457271461038857806322f3e2d4146103905780632c159a1a146103985761028a565b8063013eba921461028f578063069786ea146102c7578063086cfca8146102e85780630900f010146103105780630ce82d6714610336575b600080fd5b6102b5600480360360208110156102a557600080fd5b50356001600160a01b03166106e3565b60408051918252519081900360200190f35b6102cf6106f5565b6040805192835260208301919091528051918290030190f35b61030e600480360360208110156102fe57600080fd5b50356001600160a01b0316610738565b005b61030e6004803603602081101561032657600080fd5b50356001600160a01b03166107ef565b6102b5610dd1565b6103646004803603602081101561035457600080fd5b50356001600160a01b0316610e01565b604080519115158252519081900360200190f35b6102b5610fb5565b610364610fbb565b6102b5610fc6565b610364610fcc565b6103a0610fd5565b604080516001600160a01b039092168252519081900360200190f35b61030e600480360360208110156103d257600080fd5b5035610fe4565b610364600480360360208110156103ef57600080fd5b50356001600160a01b0316611087565b6103646110e9565b6103646110f2565b6102b561124e565b6103646004803603602081101561042d57600080fd5b50356001600160a01b0316611254565b61045a6004803603602081101561045357600080fd5b5035611269565b60408051921515835260208301919091528051918290030190f35b6102b5611288565b61030e6004803603602081101561049357600080fd5b50356001600160a01b031661128e565b61030e611377565b610364600480360360208110156104c157600080fd5b50356001600160a01b03166113d2565b6102b56113ff565b6103a0611405565b6102b5611414565b6103a061141a565b610364611429565b6102b561143a565b6102b5611684565b6103646004803603602081101561051f57600080fd5b50356001600160a01b031661168a565b6102b56116b3565b6102b56116b9565b61030e6116bf565b6102b5611935565b6102b56004803603602081101561056557600080fd5b810190602081018135600160201b81111561057f57600080fd5b82018360208201111561059157600080fd5b803590602001918460208302840111600160201b831117156105b257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061193b945050505050565b6103646004803603602081101561060657600080fd5b50356001600160a01b0316611afc565b6102b56004803603602081101561062c57600080fd5b5035611bea565b6102b56004803603602081101561064957600080fd5b50356001600160a01b0316611bff565b6102b56004803603602081101561066f57600080fd5b5035611c11565b6102b5611c26565b61030e611c2c565b61030e6004803603602081101561069c57600080fd5b50351515611c4d565b6102b5611cbf565b6102b5611cc5565b61030e611ccb565b61030e600480360360208110156106d357600080fd5b50356001600160a01b0316611d34565b600a6020526000908152604090205481565b60008060006201518061071360005442611d4e90919063ffffffff16565b8161071a57fe5b04905061072681611bea565b61072f82611c11565b92509250509091565b610740611429565b61074957600080fd5b600480546001600160a01b0319166001600160a01b038381169190911780835560408051638da5cb5b60e01b815290519190921692638da5cb5b92808201926020929091829003018186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5051600580546001600160a01b0319166001600160a01b0390921691909117905550565b6107f7610fbb565b610836576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b61083e6116bf565b6001600160a01b03811615610dce576000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b5051604080516370a0823160e01b81526001600160a01b0385811660048301529151929350600092918416916370a0823191602480820192602092909190829003018186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b5051600554604080516004808252602480830184526020830180516001600160e01b0316633bef870760e21b178152825494516368db844d60e11b81526001600160a01b038b8116948201948552958616604482018190526000606483018190526080948301948552865160848401528651999a50969097169763d1b7089a978c97909590949093909260a40191808383885b838110156109ee5781810151838201526020016109d6565b50505050905090810190601f168015610a1b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610a3d57600080fd5b505af1158015610a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610a7a57600080fd5b815160208301805160405192949293830192919084600160201b821115610aa057600080fd5b908301906020820185811115610ab557600080fd5b8251600160201b811182820188101715610ace57600080fd5b82525081516020918201929091019080838360005b83811015610afb578181015183820152602001610ae3565b50505050905090810190601f168015610b285780820380516001836020036101000a031916815260200191505b5060408181526005546016546103e8602480860191909152835180860382018152604495860185526020810180516001600160e01b0316632c71fbc360e21b1781526004805496516368db844d60e11b81526001600160a01b039586169181018281529786169881018990526000606482018190526080958201958652845160848301528451969097169d5063d1b7089a9c50909a509198509596509294909260a40191808383885b83811015610be9578181015183820152602001610bd1565b50505050905090810190601f168015610c165780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c7557600080fd5b815160208301805160405192949293830192919084600160201b821115610c9b57600080fd5b908301906020820185811115610cb057600080fd5b8251600160201b811182820188101715610cc957600080fd5b82525081516020918201929091019080838360005b83811015610cf6578181015183820152602001610cde565b50505050905090810190601f168015610d235780820380516001836020036101000a031916815260200191505b5060405250505050506000811115610dcb57600554600480546040805163b9a04cdd60e01b81526001600160a01b038781169482019490945230602482015260448101869052918316606483015251919092169163b9a04cdd9160848083019260209291908290030181600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b50505b50505b50565b6000610dfb62015180610def60145442611d4e90919063ffffffff16565b9063ffffffff611d6316565b90505b90565b60025460009060ff16610e4b576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b610e548261168a565b8015610e665750610e6482611087565b155b610eb7576040805162461bcd60e51b815260206004820152601760248201527f6973206e6f7420616e20696e6163746976652075736572000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526018602052604090205460ff1615610f16576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e48199a5cda195960921b604482015290519081900360640190fd5b6001600160a01b0382166000908152601860205260408120805460ff19166001179055610f438184611d85565b600e54909150610f5a90600163ffffffff611d4e16565b600e55610f6a3382600080612052565b6040805182815290516001600160a01b0385169133917f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749181900360200190a360019150505b919050565b600c5481565b6000610dfb30611afc565b600e5481565b60025460ff1681565b6006546001600160a01b031681565b6004546001600160a01b03163314611043576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b600081116110825760405162461bcd60e51b815260040180806020018281038252602181526020018061358d6021913960400191505060405180910390fd5b601255565b6001600160a01b0381166000908152600a60205260408120546110a98361168a565b156110e05760006110c762015180610def428563ffffffff611d4e16565b90506010548110156110de57600192505050610fb0565b505b50600092915050565b60115460ff1681565b60008054421015611141576040805162461bcd60e51b81526020600482015260146024820152731b9bdd081a5b881c195c9a5bd914dd185c9d195960621b604482015290519081900360640190fd5b60025460ff16611188576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b60065460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d60208110156111fd57600080fd5b5051611245576040805162461bcd60e51b81526020600482015260126024820152711a5cc81b9bdd081dda1a5d195b1a5cdd195960721b604482015290519081900360640190fd5b610dfb33612351565b60015481565b60186020526000908152604090205460ff1681565b6017602052600090815260409020805460019091015460ff9091169082565b600b5481565b611296611429565b61129f57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d857600080fd5b505afa1580156112ec573d6000803e3d6000fd5b505050506040513d602081101561130257600080fd5b5051611355576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61137f611429565b61138857600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b5460009081526009602090815260408083206001600160a01b03949094168352929052205460ff1690565b60155481565b6016546001600160a01b031681565b60085481565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b60025460009060ff16611484576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b61148d3361168a565b15806114a857503360009081526018602052604090205460ff165b1561152e57601660009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b50519050610dfe565b61154a62015180610def60005442611d4e90919063ffffffff16565b600b5414156115725761155c336113d2565b61156857600c5461156b565b60005b9050610dfe565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d60208110156115ec57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d602081101561166457600080fd5b5051600e5490915061167d90829063ffffffff611d6316565b9250505090565b60135481565b6001600160a01b0381166000908152600a602052604081205480156110e0576001915050610fb0565b60105481565b60145481565b6116c7610fbb565b611706576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b61170e612473565b611721426201518063ffffffff611d6316565b620151800261a8c0016000818155601491909155600554601654604080513060248083019190915282518083038201815260449283018452602081018051631619b41160e11b6001600160e01b039091161781526004805495516368db844d60e11b81526001600160a01b03978816918101828152968816958101869052606481018a90526080948101948552835160848201528351979098169863d1b7089a989197939690949093909260a49092019190808383885b838110156117f05781810151838201526020016117d8565b50505050905090810190601f16801561181d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561187c57600080fd5b815160208301805160405192949293830192919084600160201b8211156118a257600080fd5b9083019060208201858111156118b757600080fd5b8251600160201b8111828201881017156118d057600080fd5b82525081516020918201929091019080838360005b838110156118fd5781810151838201526020016118e5565b50505050905090810190601f16801561192a5780820380516001836020036101000a031916815260200191505b506040525050505050565b600d5481565b60025460009060ff16611985576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b60005b8251811015611ac257600d545a10156119d5576040805182815290517f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9181900360200190a19050610fb0565b6119f18382815181106119e457fe5b602002602001015161168a565b8015611a165750611a14838281518110611a0757fe5b6020026020010151611087565b155b8015611a56575060186000848381518110611a2d57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b15611aba57611a77838281518110611a6a57fe5b6020026020010151610e01565b611aba576040805162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015290519081900360640190fd5b600101611988565b50815160408051918252517f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9181900360200190a1505190565b6004546000906001600160a01b0316611b50576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b6005546004805460408051639be2faed60e01b81526001600160a01b03878116948201949094529183166024830152519190921691639be2faed916044808301926020929190829003018186803b158015611baa57600080fd5b505afa158015611bbe573d6000803e3d6000fd5b505050506040513d6020811015611bd457600080fd5b5051611be257506000610fb0565b506001919050565b60009081526009602052604090206001015490565b60196020526000908152604090205481565b60009081526009602052604090206002015490565b600f5481565b611c4862015180610def60005442611d4e90919063ffffffff16565b600b55565b6004546001600160a01b03163314611cac576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b6011805460ff1916911515919091179055565b60125481565b60005481565b6004546001600160a01b03163314611d2a576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b611d326128f1565b565b611d3c611429565b611d4557600080fd5b610dce81612b19565b600082821115611d5d57600080fd5b50900390565b6000808211611d7157600080fd5b6000828481611d7c57fe5b04949350505050565b6000611d8f611c2c565b600f54600b5414612048576000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d6020811015611e1457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611e6257600080fd5b505afa158015611e76573d6000803e3d6000fd5b505050506040513d6020811015611e8c57600080fd5b5051601554909150611e9c610dd1565b10611fae5760115460ff1615611eb457611eb4612b88565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611efa57600080fd5b505afa158015611f0e573d6000803e3d6000fd5b505050506040513d6020811015611f2457600080fd5b5051601254909150611f3d90829063ffffffff611d6316565b601355601254601555611f5842610e1063ffffffff611d6316565b610e1002601455600b546012546013546040805193845260208401859052838101929092526060830152517f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9181900360800190a15b600b54600f8190556000908152601760205260409020601154815460ff191660ff909116151517815560018101829055600e5415611fff57600e54601354611ffb9163ffffffff611d6316565b600c555b600b54600c546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a15050505b50600c5492915050565b600b5460009081526009602052604090206001808201546120789163ffffffff61301f16565b6001808301919091556001600160a01b038616600090815260208381526040808320805460ff191685179055600a825280832042905560199091529020546120c59163ffffffff61301f16565b5081156121ac5760165460408051636bf2228d60e11b81526001600160a01b0388811660048301529151600093929092169163d7e4451a9160248082019260209290919082900301818787803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b505050506040513d602081101561214857600080fd5b50516002830154909150612162908263ffffffff61301f16565b60028301556040805182815290516001600160a01b038816917f89ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304919081900360200190a250610dc8565b60028101546121c1908563ffffffff61301f16565b60028201556004805460408051631c2eb17b60e31b815290516000936001600160a01b039093169263e1758bd892808201926020929091829003018186803b15801561220c57600080fd5b505afa158015612220573d6000803e3d6000fd5b505050506040513d602081101561223657600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0389811660048301526024820189905291519293509083169163a9059cbb916044808201926020929091908290030181600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050506040513d60208110156122b857600080fd5b5051612303576040805162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b8315612349576040805186815290516001600160a01b038816917f89ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304919081900360200190a25b505050505050565b60008061235f600084611d85565b905061236a8361168a565b801561238f57506001600160a01b03831660009081526018602052604090205460ff16155b80156123a1575061239f836113d2565b155b156123be576123b4838260016000612052565b6001915050610fb0565b6123c78361168a565b15806123eb57506001600160a01b03831660009081526018602052604090205460ff165b156110e057600e5461240490600163ffffffff61301f16565b600e556001600160a01b0383166000908152601860205260408120805460ff19169055612435908490806001612052565b6040516001600160a01b038416907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610fb0565b61247b610fbb565b6124ba576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6124c2613038565b6124ca61311e565b620151806124e360005442611d4e90919063ffffffff16565b816124ea57fe5b04600b556004805460408051631c2eb17b60e31b815290516000936001600160a01b039093169263e1758bd892808201926020929091829003018186803b15801561253457600080fd5b505afa158015612548573d6000803e3d6000fd5b505050506040513d602081101561255e57600080fd5b5051600754909150156128435760048054604080516370a0823160e01b81526001600160a01b039283169381019390935251908316916370a08231916024808301926020929190829003018186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d60208110156125e357600080fd5b5051600754111561263b576040805162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f7567682066756e647320746f20737461727400000000000000604482015290519081900360640190fd5b6005546007546040805130602480830191909152604480830194909452825180830385018152606492830184526020810180516001600160e01b031663a9059cbb60e01b1781526004805495516368db844d60e11b81526001600160a01b038a811692820192835296871697810188905260009581018690526080948101948552835160848201528351969098169763d1b7089a978a979496909590949293909260a490920191808383885b838110156126ff5781810151838201526020016126e7565b50505050905090810190601f16801561272c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561274e57600080fd5b505af1158015612762573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561278b57600080fd5b815160208301805160405192949293830192919084600160201b8211156127b157600080fd5b9083019060208201858111156127c657600080fd5b8251600160201b8111828201881017156127df57600080fd5b82525081516020918201929091019080838360005b8381101561280c5781810151838201526020016127f4565b50505050905090810190601f1680156128395780820380516001836020036101000a031916815260200191505b5060405250505050505b604080516370a0823160e01b815230600482015290517faaf5e5cfa7e44b7c9cfc845d0cc96adc1c5a4c802d3572523f740424a3ce4fb2916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128ac57600080fd5b505afa1580156128c0573d6000803e3d6000fd5b505050506040513d60208110156128d657600080fd5b5051604080519182524260208301528051918290030190a150565b60015442101561293f576040805162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015290519081900360640190fd5b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b15801561298f57600080fd5b505afa1580156129a3573d6000803e3d6000fd5b505050506040513d60208110156129b957600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015612a0757600080fd5b505afa158015612a1b573d6000803e3d6000fd5b505050506040513d6020811015612a3157600080fd5b505190508015612b0557600480546040805163a9059cbb60e01b81526001600160a01b039283169381019390935260248301849052519084169163a9059cbb9160448083019260209291908290030181600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050506040513d6020811015612abc57600080fd5b5051612b05576040805162461bcd60e51b8152602060048201526013602482015272195b99081d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b612b0d613379565b612b15613479565b5050565b6001600160a01b038116612b2c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd857600080fd5b505afa158015612bec573d6000803e3d6000fd5b505050506040513d6020811015612c0257600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015612c5057600080fd5b505afa158015612c64573d6000803e3d6000fd5b505050506040513d6020811015612c7a57600080fd5b505160048054604080516370a0823160e01b81526001600160a01b039283169381019390935251929350600092908516916370a08231916024808301926020929190829003018186803b158015612cd057600080fd5b505afa158015612ce4573d6000803e3d6000fd5b505050506040513d6020811015612cfa57600080fd5b505160055460408051306024808301919091526044808301869052835180840382018152606493840185526020810180516001600160e01b031663a9059cbb60e01b1781526004805496516368db844d60e11b81526001600160a01b038d811692820192835297881694810185905260009681018790526080958101958652835160848201528351999a50969097169763d1b7089a978c97939694959093909260a490910191808383885b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612e0c57600080fd5b505af1158015612e20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015612e4957600080fd5b815160208301805160405192949293830192919084600160201b821115612e6f57600080fd5b908301906020820185811115612e8457600080fd5b8251600160201b811182820188101715612e9d57600080fd5b82525081516020918201929091019080838360005b83811015612eca578181015183820152602001612eb2565b50505050905090810190601f168015612ef75780820380516001836020036101000a031916815260200191505b5060405250505050506000612f15828461301f90919063ffffffff16565b604080516370a0823160e01b815230600482015290519192506001600160a01b038616916370a0823191602480820192602092909190829003018186803b158015612f5f57600080fd5b505afa158015612f73573d6000803e3d6000fd5b505050506040513d6020811015612f8957600080fd5b50518114612fde576040805162461bcd60e51b815260206004820152601760248201527f44414f207472616e7366657220686173206661696c6564000000000000000000604482015290519081900360640190fd5b604080518481526020810183905281517f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba929181900390910190a150505050565b60008282018381101561303157600080fd5b9392505050565b600054421015801561304b575060015442105b61308c576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081a5b881c195c9a5bd9609a1b604482015290519081900360640190fd5b60025460ff16156130d9576040805162461bcd60e51b815260206004820152601260248201527163616e6e6f7420737461727420747769636560701b604482015290519081900360640190fd5b6002805460ff1916600117905560408051428152905133917f727dd98701807c5fdf715b9f1fd7d87461a558e2ab3e05935add76e42e330fa3919081900360200190a2565b613126610fbb565b613165576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6005546006546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b0316635f539d6960e01b1781526004805495516368db844d60e11b81526001600160a01b039788169181018281529688169581018690526000606482018190526080958201958652845160848301528451989099169863d1b7089a989297949695909493909260a490920191808383885b8381101561321f578181015183820152602001613207565b50505050905090810190601f16801561324c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561326e57600080fd5b505af1158015613282573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156132ab57600080fd5b815160208301805160405192949293830192919084600160201b8211156132d157600080fd5b9083019060208201858111156132e657600080fd5b8251600160201b8111828201881017156132ff57600080fd5b82525081516020918201929091019080838360005b8381101561332c578181015183820152602001613314565b50505050905090810190601f1680156133595780820380516001836020036101000a031916815260200191505b506040525050600454611d3293506001600160a01b03169150611d349050565b613381610fbb565b6133c0576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6005546006546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b031663c375c2ef60e01b1781526004805495516368db844d60e11b81526001600160a01b039788169181018281529688169581018690526000606482018190526080958201958652845160848301528451989099169863d1b7089a989297949695909493909260a49092019180838388838110156117f05781810151838201526020016117d8565b6001544210156134c7576040805162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015290519081900360640190fd5b600254611d32906001600160a01b036101008204169060ff16613521576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b6002805460ff1916905560408051428152905133917ef689ee9beb942c1c9c0d6642687ace05a9000d5f2979d344163c57829fa779919081900360200190a2806001600160a01b0316fffe536368656d65206973206e6f74207265676973746572656400000000000000006379636c65206d757374206265206174206c65617374203120646179206c6f6e67a265627a7a72315820d0b246690184b3a6a5f4cc518cfdbd344c09fecbde906cc790e1023363222fda64736f6c6343000510003273746172742063616e6e6f74206265206166746572206e6f7220657175616c20746f20656e64",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061028a5760003560e01c80638081cbbd1161015c578063c1337508116100ce578063dddc361611610087578063dddc36161461067e578063de1de3a014610686578063eac471a0146106a5578063eda4e6d6146106ad578063efbe1c1c146106b5578063f2fde38b146106bd5761028a565b8063c13375081461054f578063c3c5a547146105f0578063c7a76adf14610616578063cc054dfc14610633578063cef6360014610659578063d7c4cbb8146106765761028a565b80639dc2c033116101205780639dc2c03314610501578063a21f698a14610509578063b656223d1461052f578063ba07541014610537578063be9a65551461053f578063c033abf2146105475761028a565b80638081cbbd146104d9578063884a41be146104e15780638da5cb5b146104e95780638f32d59b146104f157806398d6621b146104f95761028a565b80633d84ceca11610200578063560796d1116101b9578063560796d11461043d5780635c9302c9146104755780635d5bf1781461047d578063715018a6146104a357806373b2e80e146104ab578063741470ac146104d15761028a565b80633d84ceca146103bc5780634202d214146103d9578063456ac1c2146103ff5780634e71d92d14610407578063506ec0951461040f5780635231e2f0146104175761028a565b80631bbc644c116102525780631bbc644c1461033e5780631d8f5ea914610378578063223668441461038057806322b457271461038857806322f3e2d4146103905780632c159a1a146103985761028a565b8063013eba921461028f578063069786ea146102c7578063086cfca8146102e85780630900f010146103105780630ce82d6714610336575b600080fd5b6102b5600480360360208110156102a557600080fd5b50356001600160a01b03166106e3565b60408051918252519081900360200190f35b6102cf6106f5565b6040805192835260208301919091528051918290030190f35b61030e600480360360208110156102fe57600080fd5b50356001600160a01b0316610738565b005b61030e6004803603602081101561032657600080fd5b50356001600160a01b03166107ef565b6102b5610dd1565b6103646004803603602081101561035457600080fd5b50356001600160a01b0316610e01565b604080519115158252519081900360200190f35b6102b5610fb5565b610364610fbb565b6102b5610fc6565b610364610fcc565b6103a0610fd5565b604080516001600160a01b039092168252519081900360200190f35b61030e600480360360208110156103d257600080fd5b5035610fe4565b610364600480360360208110156103ef57600080fd5b50356001600160a01b0316611087565b6103646110e9565b6103646110f2565b6102b561124e565b6103646004803603602081101561042d57600080fd5b50356001600160a01b0316611254565b61045a6004803603602081101561045357600080fd5b5035611269565b60408051921515835260208301919091528051918290030190f35b6102b5611288565b61030e6004803603602081101561049357600080fd5b50356001600160a01b031661128e565b61030e611377565b610364600480360360208110156104c157600080fd5b50356001600160a01b03166113d2565b6102b56113ff565b6103a0611405565b6102b5611414565b6103a061141a565b610364611429565b6102b561143a565b6102b5611684565b6103646004803603602081101561051f57600080fd5b50356001600160a01b031661168a565b6102b56116b3565b6102b56116b9565b61030e6116bf565b6102b5611935565b6102b56004803603602081101561056557600080fd5b810190602081018135600160201b81111561057f57600080fd5b82018360208201111561059157600080fd5b803590602001918460208302840111600160201b831117156105b257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061193b945050505050565b6103646004803603602081101561060657600080fd5b50356001600160a01b0316611afc565b6102b56004803603602081101561062c57600080fd5b5035611bea565b6102b56004803603602081101561064957600080fd5b50356001600160a01b0316611bff565b6102b56004803603602081101561066f57600080fd5b5035611c11565b6102b5611c26565b61030e611c2c565b61030e6004803603602081101561069c57600080fd5b50351515611c4d565b6102b5611cbf565b6102b5611cc5565b61030e611ccb565b61030e600480360360208110156106d357600080fd5b50356001600160a01b0316611d34565b600a6020526000908152604090205481565b60008060006201518061071360005442611d4e90919063ffffffff16565b8161071a57fe5b04905061072681611bea565b61072f82611c11565b92509250509091565b610740611429565b61074957600080fd5b600480546001600160a01b0319166001600160a01b038381169190911780835560408051638da5cb5b60e01b815290519190921692638da5cb5b92808201926020929091829003018186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5051600580546001600160a01b0319166001600160a01b0390921691909117905550565b6107f7610fbb565b610836576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b61083e6116bf565b6001600160a01b03811615610dce576000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b5051604080516370a0823160e01b81526001600160a01b0385811660048301529151929350600092918416916370a0823191602480820192602092909190829003018186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b5051600554604080516004808252602480830184526020830180516001600160e01b0316633bef870760e21b178152825494516368db844d60e11b81526001600160a01b038b8116948201948552958616604482018190526000606483018190526080948301948552865160848401528651999a50969097169763d1b7089a978c97909590949093909260a40191808383885b838110156109ee5781810151838201526020016109d6565b50505050905090810190601f168015610a1b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610a3d57600080fd5b505af1158015610a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610a7a57600080fd5b815160208301805160405192949293830192919084600160201b821115610aa057600080fd5b908301906020820185811115610ab557600080fd5b8251600160201b811182820188101715610ace57600080fd5b82525081516020918201929091019080838360005b83811015610afb578181015183820152602001610ae3565b50505050905090810190601f168015610b285780820380516001836020036101000a031916815260200191505b5060408181526005546016546103e8602480860191909152835180860382018152604495860185526020810180516001600160e01b0316632c71fbc360e21b1781526004805496516368db844d60e11b81526001600160a01b039586169181018281529786169881018990526000606482018190526080958201958652845160848301528451969097169d5063d1b7089a9c50909a509198509596509294909260a40191808383885b83811015610be9578181015183820152602001610bd1565b50505050905090810190601f168015610c165780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c7557600080fd5b815160208301805160405192949293830192919084600160201b821115610c9b57600080fd5b908301906020820185811115610cb057600080fd5b8251600160201b811182820188101715610cc957600080fd5b82525081516020918201929091019080838360005b83811015610cf6578181015183820152602001610cde565b50505050905090810190601f168015610d235780820380516001836020036101000a031916815260200191505b5060405250505050506000811115610dcb57600554600480546040805163b9a04cdd60e01b81526001600160a01b038781169482019490945230602482015260448101869052918316606483015251919092169163b9a04cdd9160848083019260209291908290030181600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b50505b50505b50565b6000610dfb62015180610def60145442611d4e90919063ffffffff16565b9063ffffffff611d6316565b90505b90565b60025460009060ff16610e4b576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b610e548261168a565b8015610e665750610e6482611087565b155b610eb7576040805162461bcd60e51b815260206004820152601760248201527f6973206e6f7420616e20696e6163746976652075736572000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526018602052604090205460ff1615610f16576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e48199a5cda195960921b604482015290519081900360640190fd5b6001600160a01b0382166000908152601860205260408120805460ff19166001179055610f438184611d85565b600e54909150610f5a90600163ffffffff611d4e16565b600e55610f6a3382600080612052565b6040805182815290516001600160a01b0385169133917f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749181900360200190a360019150505b919050565b600c5481565b6000610dfb30611afc565b600e5481565b60025460ff1681565b6006546001600160a01b031681565b6004546001600160a01b03163314611043576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b600081116110825760405162461bcd60e51b815260040180806020018281038252602181526020018061358d6021913960400191505060405180910390fd5b601255565b6001600160a01b0381166000908152600a60205260408120546110a98361168a565b156110e05760006110c762015180610def428563ffffffff611d4e16565b90506010548110156110de57600192505050610fb0565b505b50600092915050565b60115460ff1681565b60008054421015611141576040805162461bcd60e51b81526020600482015260146024820152731b9bdd081a5b881c195c9a5bd914dd185c9d195960621b604482015290519081900360640190fd5b60025460ff16611188576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b60065460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d60208110156111fd57600080fd5b5051611245576040805162461bcd60e51b81526020600482015260126024820152711a5cc81b9bdd081dda1a5d195b1a5cdd195960721b604482015290519081900360640190fd5b610dfb33612351565b60015481565b60186020526000908152604090205460ff1681565b6017602052600090815260409020805460019091015460ff9091169082565b600b5481565b611296611429565b61129f57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d857600080fd5b505afa1580156112ec573d6000803e3d6000fd5b505050506040513d602081101561130257600080fd5b5051611355576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61137f611429565b61138857600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b5460009081526009602090815260408083206001600160a01b03949094168352929052205460ff1690565b60155481565b6016546001600160a01b031681565b60085481565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b60025460009060ff16611484576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b61148d3361168a565b15806114a857503360009081526018602052604090205460ff165b1561152e57601660009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b50519050610dfe565b61154a62015180610def60005442611d4e90919063ffffffff16565b600b5414156115725761155c336113d2565b61156857600c5461156b565b60005b9050610dfe565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d60208110156115ec57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d602081101561166457600080fd5b5051600e5490915061167d90829063ffffffff611d6316565b9250505090565b60135481565b6001600160a01b0381166000908152600a602052604081205480156110e0576001915050610fb0565b60105481565b60145481565b6116c7610fbb565b611706576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b61170e612473565b611721426201518063ffffffff611d6316565b620151800261a8c0016000818155601491909155600554601654604080513060248083019190915282518083038201815260449283018452602081018051631619b41160e11b6001600160e01b039091161781526004805495516368db844d60e11b81526001600160a01b03978816918101828152968816958101869052606481018a90526080948101948552835160848201528351979098169863d1b7089a989197939690949093909260a49092019190808383885b838110156117f05781810151838201526020016117d8565b50505050905090810190601f16801561181d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561187c57600080fd5b815160208301805160405192949293830192919084600160201b8211156118a257600080fd5b9083019060208201858111156118b757600080fd5b8251600160201b8111828201881017156118d057600080fd5b82525081516020918201929091019080838360005b838110156118fd5781810151838201526020016118e5565b50505050905090810190601f16801561192a5780820380516001836020036101000a031916815260200191505b506040525050505050565b600d5481565b60025460009060ff16611985576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b60005b8251811015611ac257600d545a10156119d5576040805182815290517f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9181900360200190a19050610fb0565b6119f18382815181106119e457fe5b602002602001015161168a565b8015611a165750611a14838281518110611a0757fe5b6020026020010151611087565b155b8015611a56575060186000848381518110611a2d57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b15611aba57611a77838281518110611a6a57fe5b6020026020010151610e01565b611aba576040805162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015290519081900360640190fd5b600101611988565b50815160408051918252517f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9181900360200190a1505190565b6004546000906001600160a01b0316611b50576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b6005546004805460408051639be2faed60e01b81526001600160a01b03878116948201949094529183166024830152519190921691639be2faed916044808301926020929190829003018186803b158015611baa57600080fd5b505afa158015611bbe573d6000803e3d6000fd5b505050506040513d6020811015611bd457600080fd5b5051611be257506000610fb0565b506001919050565b60009081526009602052604090206001015490565b60196020526000908152604090205481565b60009081526009602052604090206002015490565b600f5481565b611c4862015180610def60005442611d4e90919063ffffffff16565b600b55565b6004546001600160a01b03163314611cac576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b6011805460ff1916911515919091179055565b60125481565b60005481565b6004546001600160a01b03163314611d2a576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b611d326128f1565b565b611d3c611429565b611d4557600080fd5b610dce81612b19565b600082821115611d5d57600080fd5b50900390565b6000808211611d7157600080fd5b6000828481611d7c57fe5b04949350505050565b6000611d8f611c2c565b600f54600b5414612048576000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d6020811015611e1457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611e6257600080fd5b505afa158015611e76573d6000803e3d6000fd5b505050506040513d6020811015611e8c57600080fd5b5051601554909150611e9c610dd1565b10611fae5760115460ff1615611eb457611eb4612b88565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611efa57600080fd5b505afa158015611f0e573d6000803e3d6000fd5b505050506040513d6020811015611f2457600080fd5b5051601254909150611f3d90829063ffffffff611d6316565b601355601254601555611f5842610e1063ffffffff611d6316565b610e1002601455600b546012546013546040805193845260208401859052838101929092526060830152517f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9181900360800190a15b600b54600f8190556000908152601760205260409020601154815460ff191660ff909116151517815560018101829055600e5415611fff57600e54601354611ffb9163ffffffff611d6316565b600c555b600b54600c546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a15050505b50600c5492915050565b600b5460009081526009602052604090206001808201546120789163ffffffff61301f16565b6001808301919091556001600160a01b038616600090815260208381526040808320805460ff191685179055600a825280832042905560199091529020546120c59163ffffffff61301f16565b5081156121ac5760165460408051636bf2228d60e11b81526001600160a01b0388811660048301529151600093929092169163d7e4451a9160248082019260209290919082900301818787803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b505050506040513d602081101561214857600080fd5b50516002830154909150612162908263ffffffff61301f16565b60028301556040805182815290516001600160a01b038816917f89ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304919081900360200190a250610dc8565b60028101546121c1908563ffffffff61301f16565b60028201556004805460408051631c2eb17b60e31b815290516000936001600160a01b039093169263e1758bd892808201926020929091829003018186803b15801561220c57600080fd5b505afa158015612220573d6000803e3d6000fd5b505050506040513d602081101561223657600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0389811660048301526024820189905291519293509083169163a9059cbb916044808201926020929091908290030181600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050506040513d60208110156122b857600080fd5b5051612303576040805162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b8315612349576040805186815290516001600160a01b038816917f89ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304919081900360200190a25b505050505050565b60008061235f600084611d85565b905061236a8361168a565b801561238f57506001600160a01b03831660009081526018602052604090205460ff16155b80156123a1575061239f836113d2565b155b156123be576123b4838260016000612052565b6001915050610fb0565b6123c78361168a565b15806123eb57506001600160a01b03831660009081526018602052604090205460ff165b156110e057600e5461240490600163ffffffff61301f16565b600e556001600160a01b0383166000908152601860205260408120805460ff19169055612435908490806001612052565b6040516001600160a01b038416907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610fb0565b61247b610fbb565b6124ba576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6124c2613038565b6124ca61311e565b620151806124e360005442611d4e90919063ffffffff16565b816124ea57fe5b04600b556004805460408051631c2eb17b60e31b815290516000936001600160a01b039093169263e1758bd892808201926020929091829003018186803b15801561253457600080fd5b505afa158015612548573d6000803e3d6000fd5b505050506040513d602081101561255e57600080fd5b5051600754909150156128435760048054604080516370a0823160e01b81526001600160a01b039283169381019390935251908316916370a08231916024808301926020929190829003018186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d60208110156125e357600080fd5b5051600754111561263b576040805162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f7567682066756e647320746f20737461727400000000000000604482015290519081900360640190fd5b6005546007546040805130602480830191909152604480830194909452825180830385018152606492830184526020810180516001600160e01b031663a9059cbb60e01b1781526004805495516368db844d60e11b81526001600160a01b038a811692820192835296871697810188905260009581018690526080948101948552835160848201528351969098169763d1b7089a978a979496909590949293909260a490920191808383885b838110156126ff5781810151838201526020016126e7565b50505050905090810190601f16801561272c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561274e57600080fd5b505af1158015612762573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561278b57600080fd5b815160208301805160405192949293830192919084600160201b8211156127b157600080fd5b9083019060208201858111156127c657600080fd5b8251600160201b8111828201881017156127df57600080fd5b82525081516020918201929091019080838360005b8381101561280c5781810151838201526020016127f4565b50505050905090810190601f1680156128395780820380516001836020036101000a031916815260200191505b5060405250505050505b604080516370a0823160e01b815230600482015290517faaf5e5cfa7e44b7c9cfc845d0cc96adc1c5a4c802d3572523f740424a3ce4fb2916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128ac57600080fd5b505afa1580156128c0573d6000803e3d6000fd5b505050506040513d60208110156128d657600080fd5b5051604080519182524260208301528051918290030190a150565b60015442101561293f576040805162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015290519081900360640190fd5b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b15801561298f57600080fd5b505afa1580156129a3573d6000803e3d6000fd5b505050506040513d60208110156129b957600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015612a0757600080fd5b505afa158015612a1b573d6000803e3d6000fd5b505050506040513d6020811015612a3157600080fd5b505190508015612b0557600480546040805163a9059cbb60e01b81526001600160a01b039283169381019390935260248301849052519084169163a9059cbb9160448083019260209291908290030181600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050506040513d6020811015612abc57600080fd5b5051612b05576040805162461bcd60e51b8152602060048201526013602482015272195b99081d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b612b0d613379565b612b15613479565b5050565b6001600160a01b038116612b2c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd857600080fd5b505afa158015612bec573d6000803e3d6000fd5b505050506040513d6020811015612c0257600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015612c5057600080fd5b505afa158015612c64573d6000803e3d6000fd5b505050506040513d6020811015612c7a57600080fd5b505160048054604080516370a0823160e01b81526001600160a01b039283169381019390935251929350600092908516916370a08231916024808301926020929190829003018186803b158015612cd057600080fd5b505afa158015612ce4573d6000803e3d6000fd5b505050506040513d6020811015612cfa57600080fd5b505160055460408051306024808301919091526044808301869052835180840382018152606493840185526020810180516001600160e01b031663a9059cbb60e01b1781526004805496516368db844d60e11b81526001600160a01b038d811692820192835297881694810185905260009681018790526080958101958652835160848201528351999a50969097169763d1b7089a978c97939694959093909260a490910191808383885b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612e0c57600080fd5b505af1158015612e20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015612e4957600080fd5b815160208301805160405192949293830192919084600160201b821115612e6f57600080fd5b908301906020820185811115612e8457600080fd5b8251600160201b811182820188101715612e9d57600080fd5b82525081516020918201929091019080838360005b83811015612eca578181015183820152602001612eb2565b50505050905090810190601f168015612ef75780820380516001836020036101000a031916815260200191505b5060405250505050506000612f15828461301f90919063ffffffff16565b604080516370a0823160e01b815230600482015290519192506001600160a01b038616916370a0823191602480820192602092909190829003018186803b158015612f5f57600080fd5b505afa158015612f73573d6000803e3d6000fd5b505050506040513d6020811015612f8957600080fd5b50518114612fde576040805162461bcd60e51b815260206004820152601760248201527f44414f207472616e7366657220686173206661696c6564000000000000000000604482015290519081900360640190fd5b604080518481526020810183905281517f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba929181900390910190a150505050565b60008282018381101561303157600080fd5b9392505050565b600054421015801561304b575060015442105b61308c576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081a5b881c195c9a5bd9609a1b604482015290519081900360640190fd5b60025460ff16156130d9576040805162461bcd60e51b815260206004820152601260248201527163616e6e6f7420737461727420747769636560701b604482015290519081900360640190fd5b6002805460ff1916600117905560408051428152905133917f727dd98701807c5fdf715b9f1fd7d87461a558e2ab3e05935add76e42e330fa3919081900360200190a2565b613126610fbb565b613165576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6005546006546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b0316635f539d6960e01b1781526004805495516368db844d60e11b81526001600160a01b039788169181018281529688169581018690526000606482018190526080958201958652845160848301528451989099169863d1b7089a989297949695909493909260a490920191808383885b8381101561321f578181015183820152602001613207565b50505050905090810190601f16801561324c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561326e57600080fd5b505af1158015613282573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156132ab57600080fd5b815160208301805160405192949293830192919084600160201b8211156132d157600080fd5b9083019060208201858111156132e657600080fd5b8251600160201b8111828201881017156132ff57600080fd5b82525081516020918201929091019080838360005b8381101561332c578181015183820152602001613314565b50505050905090810190601f1680156133595780820380516001836020036101000a031916815260200191505b506040525050600454611d3293506001600160a01b03169150611d349050565b613381610fbb565b6133c0576040805162461bcd60e51b8152602060048201526018602482015260008051602061356d833981519152604482015290519081900360640190fd5b6005546006546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b031663c375c2ef60e01b1781526004805495516368db844d60e11b81526001600160a01b039788169181018281529688169581018690526000606482018190526080958201958652845160848301528451989099169863d1b7089a989297949695909493909260a49092019180838388838110156117f05781810151838201526020016117d8565b6001544210156134c7576040805162461bcd60e51b81526020600482015260146024820152731c195c9a5bd9081a185cc81b9bdd08195b99195960621b604482015290519081900360640190fd5b600254611d32906001600160a01b036101008204169060ff16613521576040805162461bcd60e51b815260206004820152600d60248201526c6973206e6f742061637469766560981b604482015290519081900360640190fd5b6002805460ff1916905560408051428152905133917ef689ee9beb942c1c9c0d6642687ace05a9000d5f2979d344163c57829fa779919081900360200190a2806001600160a01b0316fffe536368656d65206973206e6f74207265676973746572656400000000000000006379636c65206d757374206265206174206c65617374203120646179206c6f6e67a265627a7a72315820d0b246690184b3a6a5f4cc518cfdbd344c09fecbde906cc790e1023363222fda64736f6c63430005100032",
  "sourceMap": "237:15443:30:-;;;443:64:7;;;-1:-1:-1;;;;;;443:64:7;;;478:6:30;443:41;;3518:466;5:2:-1;;;;30:1;27;20:12;5:2;3518:466:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3518:466:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3744:1;3518:466;;;;;;;;;1629:25:2;;;1621:76;;;;-1:-1:-1;;;1621:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:11;:26;;;1744:9;:22;;;;1776:6;:16;;-1:-1:-1;;;;;;1776:16:2;;-1:-1:-1;;;;;1776:16:2;;;;;-1:-1:-1;;1803:16:2;;;515:6:77;:19;;524:10;-1:-1:-1;;;;;;515:19:77;;;;;;;;549:40;;582:6;;;1708:11:2;549:40:77;;1708:11:2;;549:40:77;688:6:7;:16;;-1:-1:-1;;;;;;688:16:7;-1:-1:-1;;;;;688:16:7;;;;;;;;;;;719:6;:19;715:98;;787:6;;;:14;;;-1:-1:-1;;;787:14:7;;;;-1:-1:-1;;;;;787:6:7;;;;:12;;:14;;;;;;;;;;;;:6;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;787:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;787:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;787:14:7;754:10;:48;;-1:-1:-1;;;;;;754:48:7;-1:-1:-1;;;;;754:48:7;;;;;;;;;715:98;-1:-1:-1;;;;;;483:24:11;;475:62;;;;;-1:-1:-1;;;475:62:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;547:8;:20;;-1:-1:-1;;;;;547:20:11;;;-1:-1:-1;;;;;;547:20:11;;;;;;;;;-1:-1:-1;;;1640:14:8;:32;;;;-1:-1:-1;;;3785:20:30;3777:65;;;;;-1:-1:-1;;;3777:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:15;:34;;;;3885:14;:32;;-1:-1:-1;;;;;3885:32:30;;;-1:-1:-1;;;;;;3885:32:30;;;;;;;;;;-1:-1:-1;;3921:21:30;:29;;-1:-1:-1;;3921:29:30;;;3954:11;:26;-1:-1:-1;;237:15443:30;;;;;;",
  "deployedSourceMap": "237:15443:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:15443:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:46:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;774:46:8;-1:-1:-1;;;;;774:46:8;;:::i;:::-;;;;;;;;;;;;;;;;2935:205;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1698:143:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1698:143:7;-1:-1:-1;;;;;1698:143:7;;:::i;:::-;;15015:663:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15015:663:30;-1:-1:-1;;;;;15015:663:30;;:::i;5043:107::-;;;:::i;12623:873::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12623:873:30;-1:-1:-1;;;;;12623:873:30;;:::i;:::-;;;;;;;;;;;;;;;;;;363:23;;;:::i;1987:102:7:-;;;:::i;615:31:30:-;;;:::i;274:20:2:-;;;:::i;278:24:11:-;;;:::i;:::-;;;;-1:-1:-1;;;;;278:24:11;;;;;;;;;;;;;;4812:158:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4812:158:30;;:::i;7713:324::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7713:324:30;-1:-1:-1;;;;;7713:324:30;;:::i;1030:33::-;;;:::i;11928:128::-;;;:::i;243:24:2:-;;;:::i;2077:52:30:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2077:52:30;-1:-1:-1;;;;;2077:52:30;;:::i;1959:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1959:48:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;827:25:8;;;:::i;2735:168:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2735:168:11;-1:-1:-1;;;;;2735:168:11;;:::i;1347:137:77:-;;;:::i;6790:119:30:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6790:119:30;-1:-1:-1;;;;;6790:119:30;;:::i;1443:33::-;;;:::i;1655:36::-;;;:::i;564:32:8:-;;;:::i;659:77:77:-;;;:::i;979:90::-;;;:::i;9595:649:30:-;;;:::i;1255:29::-;;;:::i;7085:214::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7085:214:30;-1:-1:-1;;;;;7085:214:30;;:::i;924:30::-;;;:::i;1324:27::-;;;:::i;14396:315::-;;;:::i;443:41::-;;;:::i;13735:482::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13735:482:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13735:482:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13735:482:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13735:482:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13735:482:30;;-1:-1:-1;13735:482:30;;-1:-1:-1;;;;;13735:482:30:i;2235:262:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2235:262:7;-1:-1:-1;;;;;2235:262:7;;:::i;2273:122:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2273:122:8;;:::i;2164:53:30:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2164:53:30;-1:-1:-1;;;;;2164:53:30;;:::i;2655:116:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2655:116:8;;:::i;786:30:30:-;;;:::i;6553:80::-;;;:::i;14836:121::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14836:121:30;;;;:::i;1140:26::-;;;:::i;211::2:-;;;:::i;14960:52:30:-;;;:::i;1655:107:77:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:77;-1:-1:-1;;;;;1655:107:77;;:::i;774:46:8:-;;;;;;;;;;;;;:::o;2935:205::-;2981:13;2996:14;3022:13;3063:6;3039:20;3047:11;;3039:3;:7;;:20;;;;:::i;:::-;3038:31;;;;;;3022:47;;3087:22;3103:5;3087:15;:22::i;:::-;3111:21;3126:5;3111:14;:21::i;:::-;3079:54;;;;;2935:205;;:::o;1698:143:7:-;863:9:77;:7;:9::i;:::-;855:18;;;;;;1760:6:7;:16;;-1:-1:-1;;;;;;1760:16:7;-1:-1:-1;;;;;1760:16:7;;;;;;;;;;1819:14;;;-1:-1:-1;;;1819:14:7;;;;:6;;;;;:12;;:14;;;;;;;;;;;;;:6;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;1819:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1819:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1819:14:7;1786:10;:48;;-1:-1:-1;;;;;;1786:48:7;-1:-1:-1;;;;;1786:48:7;;;;;;;;;-1:-1:-1;1698:143:7:o;15015:663:30:-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1113:51:7;;;;;;;;;;;;;;;15081:7:30;:5;:7::i;:::-;-1:-1:-1;;;;;15097:27:30;;;15093:582;;15131:13;15166:6;;;;;;;;;-1:-1:-1;;;;;15166:6:30;-1:-1:-1;;;;;15166:18:30;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15166:20:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15166:20:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15166:20:30;15215:27;;;-1:-1:-1;;;15215:27:30;;-1:-1:-1;;;;;15215:27:30;;;;;;;;;15166:20;;-1:-1:-1;15194:18:30;;15215:12;;;;;;:27;;;;;15166:20;;15215:27;;;;;;;;:12;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;15215:27:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15215:27:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15215:27:30;15290:10;;15337:32;;;22::-1;6:49;;;15337:32:30;;;;;;15215:27;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;15375:6:30;;15290:103;;-1:-1:-1;;;15290:103:30;;-1:-1:-1;;;;;15290:103:30;;;;;;;;;15375:6;;;15290:103;;;;;;:10;:103;;;;;;;;;;;;;;;;;;;;;15215:27;;-1:-1:-1;15290:10:30;;;;;:22;;15318:13;;15375:6;;15290:10;;:103;;;;;;;;;25:18:-1;15290:10:30;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15290:103:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15290:103:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15290:103:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15290:103:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;15290:103:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;15290:103:30;;420:4:-1;411:14;;;;15290:103:30;;;;;411:14:-1;15290:103:30;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15290:103:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15290:103:30;;;;15399:10;;15435:14;;15507:4;15456:56;;;;;;;;;;26:21:-1;;;22:32;;6:49;;15456:56:30;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;15518:6:30;;;15399:137;;-1:-1:-1;;;15399:137:30;;-1:-1:-1;;;;;15435:14:30;;;15399:137;;;;;;15518:6;;;15399:137;;;;;;:10;:137;;;;;;;;;;;;;;;;;;;;;:10;;;;;-1:-1:-1;15399:22:30;;-1:-1:-1;15435:14:30;;-1:-1:-1;15456:56:30;;-1:-1:-1;15518:6:30;;-1:-1:-1;15399:10:30;;:137;;;;;;;25:18:-1;15399:10:30;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15399:137:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15399:137:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15399:137:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15399:137:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;15399:137:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;15399:137:30;;420:4:-1;411:14;;;;15399:137:30;;;;;411:14:-1;15399:137:30;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15399:137:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15559:1;15546:10;:14;15542:129;;;15568:10;;15653:6;;;15568:97;;;-1:-1:-1;;;15568:97:30;;-1:-1:-1;;;;;15568:97:30;;;;;;;;;;15624:4;15568:97;;;;;;;;;;15653:6;;;15568:97;;;;;:10;;;;;:32;;:97;;;;;;;;;;;;;;:10;;:97;;;5:2:-1;;;;30:1;27;20:12;5:2;15568:97:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15568:97:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15542:129:30;15093:582;;;15015:663;:::o;5043:107::-;5093:7;5113:33;5139:6;5113:21;5121:12;;5113:3;:7;;:21;;;;:::i;:::-;:25;:33;:25;:33;:::i;:::-;5106:40;;5043:107;;:::o;12623:873::-;544:8:2;;12685:4:30;;544:8:2;;536:34;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;;;;12844:22:30;12857:8;12844:12;:22::i;:::-;:49;;;;;12871:22;12884:8;12871:12;:22::i;:::-;12870:23;12844:49;12832:95;;;;;-1:-1:-1;;;12832:95:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12940:30:30;;;;;;:20;:30;;;;;;;;12939:31;12931:58;;;;;-1:-1:-1;;;12931:58:30;;;;;;;;;;;;-1:-1:-1;;;12931:58:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12993:30:30;;;;;;:20;:30;;;;;:37;;-1:-1:-1;;12993:37:30;13026:4;12993:37;;;13271:32;12993:30;13014:8;13271:19;:32::i;:::-;13326:16;;13245:58;;-1:-1:-1;13326:23:30;;13347:1;13326:23;:20;:23;:::i;:::-;13307:16;:42;13353:58;13369:10;13381:15;13398:5;;13353:15;:58::i;:::-;13420:57;;;;;;;;-1:-1:-1;;;;;13420:57:30;;;13439:10;;13420:57;;;;;;;;;13488:4;13481:11;;;580:1:2;12623:873:30;;;:::o;363:23::-;;;;:::o;1987:102:7:-;2032:4;2055:27;2076:4;2055:12;:27::i;615:31:30:-;;;;:::o;274:20:2:-;;;;;;:::o;278:24:11:-;;;-1:-1:-1;;;;;278:24:11;;:::o;4812:158:30:-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:1:30;4886:10;:14;4878:60;;;;-1:-1:-1;;;4878:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4942:11;:24;4812:158::o;7713:324::-;-1:-1:-1;;;;;7806:21:30;;7774:4;7806:21;;;:11;:21;;;;;;7835:22;7818:8;7835:12;:22::i;:::-;7831:187;;;7864:26;7893:32;7918:6;7893:20;:3;7901:11;7893:20;:7;:20;:::i;:32::-;7864:61;;7955:15;;7934:18;:36;7930:84;;;8004:4;7997:11;;;;;;7930:84;7831:187;;-1:-1:-1;8028:5:30;;7713:324;-1:-1:-1;;7713:324:30:o;1030:33::-;;;;;;:::o;11928:128::-;12016:4;3088:11;;3081:3;:18;;3073:51;;;;;-1:-1:-1;;;3073:51:30;;;;;;;;;;;;-1:-1:-1;;;3073:51:30;;;;;;;;;;;;;;;544:8:2;;;;536:34;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;;;;1190:8:11;;:34;;;-1:-1:-1;;;1190:34:11;;1213:10;1190:34;;;;;;-1:-1:-1;;;;;1190:8:11;;;;:22;;:34;;;;;;;;;;;;;;;:8;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;1190:34:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1190:34:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1190:34:11;1182:65;;;;;-1:-1:-1;;;1182:65:11;;;;;;;;;;;;-1:-1:-1;;;1182:65:11;;;;;;;;;;;;;;;12034:18:30;12041:10;12034:6;:18::i;243:24:2:-;;;;:::o;2077:52:30:-;;;;;;;;;;;;;;;:::o;1959:48::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;827:25:8:-;;;;:::o;2735:168:11:-;863:9:77;:7;:9::i;:::-;855:18;;;;;;2811:9:11;-1:-1:-1;;;;;2811:22:11;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2811:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2811:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2811:24:11;2803:63;;;;;-1:-1:-1;;;2803:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:8;:20;;-1:-1:-1;;;;;;2876:20:11;-1:-1:-1;;;;;2876:20:11;;;;;;;;;;2735:168::o;1347:137:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1429:6;;1408:40;;1445:1;;-1:-1:-1;;;;;1429:6:77;;1408:40;;1445:1;;1408:40;1458:6;:19;;-1:-1:-1;;;;;;1458:19:77;;;1347:137::o;6790:119:30:-;6874:10;;6848:4;6865:20;;;:8;:20;;;;;;;;-1:-1:-1;;;;;6865:40:30;;;;;;;;;;;;;;6790:119::o;1443:33::-;;;;:::o;1655:36::-;;;-1:-1:-1;;;;;1655:36:30;;:::o;564:32:8:-;;;;:::o;659:77:77:-;723:6;;-1:-1:-1;;;;;723:6:77;659:77;:::o;979:90::-;1056:6;;-1:-1:-1;;;;;1056:6:77;1042:10;:20;;979:90::o;9595:649:30:-;544:8:2;;9658:7:30;;544:8:2;;536:34;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;;;;9740:24:30;9753:10;9740:12;:24::i;:::-;9739:25;:61;;;-1:-1:-1;9789:10:30;9768:32;;;;:20;:32;;;;;;;;9739:61;9735:112;;;9814:14;;;;;;;;;-1:-1:-1;;;;;9814:14:30;-1:-1:-1;;;;;9814:26:30;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9814:28:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9814:28:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9814:28:30;;-1:-1:-1;9807:35:30;;9735:112;9963:34;9990:6;9964:20;9972:11;;9964:3;:7;;:20;;;;:::i;9963:34::-;9949:10;;:48;9945:108;;;10011:22;10022:10;10011;:22::i;:::-;:37;;10040:8;;10011:37;;;10036:1;10011:37;10004:44;;;;9945:108;10097:14;10114:6;;;;;;;;;-1:-1:-1;;;;;10114:6:30;-1:-1:-1;;;;;10114:18:30;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10114:20:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10114:20:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10114:20:30;10163:30;;;-1:-1:-1;;;10163:30:30;;10187:4;10163:30;;;;;;10114:20;;-1:-1:-1;10138:22:30;;-1:-1:-1;;;;;10163:15:30;;;;;:30;;;;;10114:20;;10163:30;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;10163:30:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10163:30:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10163:30:30;10223:16;;10163:30;;-1:-1:-1;10204:36:30;;10163:30;;10204:36;:18;:36;:::i;:::-;10197:43;;;;9595:649;:::o;1255:29::-;;;;:::o;7085:214::-;-1:-1:-1;;;;;7178:21:30;;7146:4;7178:21;;;:11;:21;;;;;;7207:15;;7203:77;;7271:4;7264:11;;;;;924:30;;;;:::o;1324:27::-;;;;:::o;14396:315::-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1113:51:7;;;;;;;;;;;;;;;14439:13:30;:11;:13::i;:::-;14470:15;:3;14478:6;14470:15;:7;:15;:::i;:::-;14488:6;14470:24;14497:8;14470:35;14456:11;:49;;;14538:12;:26;;;;14568:10;;14603:14;;14623:63;;;14680:4;14623:63;;;;;;;;;;26:21:-1;;;22:32;;6:49;;14623:63:30;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;;;;182:15;;;179:29;160:49;;14691:6:30;;;14568:139;;-1:-1:-1;;;14568:139:30;;-1:-1:-1;;;;;14603:14:30;;;14568:139;;;;;;14691:6;;;14568:139;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;14603:14;;14623:63;;14456:11;;14568:139;;;;;;;;;25:18:-1;14568:139:30;;25:18:-1;14456:11:30;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14568:139:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14568:139:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14568:139:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;14568:139:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;14568:139:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;14568:139:30;;420:4:-1;411:14;;;;14568:139:30;;;;;411:14:-1;14568:139:30;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14568:139:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14396:315::o;443:41::-;;;;:::o;13735:482::-;544:8:2;;13818:7:30;;544:8:2;;536:34;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;;;;13837:9:30;13832:317;13856:9;:16;13852:1;:20;13832:317;;;13900:17;;13888:9;:29;13884:80;;;13930:14;;;;;;;;;;;;;;;;;13957:1;-1:-1:-1;13950:8:30;;13884:80;13977:26;13990:9;14000:1;13990:12;;;;;;;;;;;;;;13977;:26::i;:::-;:61;;;;;14012:26;14025:9;14035:1;14025:12;;;;;;;;;;;;;;14012;:26::i;:::-;14011:27;13977:61;:104;;;;;14047:20;:34;14068:9;14078:1;14068:12;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14047:34:30;;;;;;;;;;;-1:-1:-1;14047:34:30;;;;14046:35;13977:104;13968:177;;;14101:18;14106:9;14116:1;14106:12;;;;;;;;;;;;;;14101:4;:18::i;:::-;14093:46;;;;;-1:-1:-1;;;14093:46:30;;;;;;;;;;;;-1:-1:-1;;;14093:46:30;;;;;;;;;;;;;;;13874:3;;13832:317;;;-1:-1:-1;14169:16:30;;14157:29;;;;;;;;;;;;;;;;-1:-1:-1;14197:16:30;;13735:482::o;2235:262:7:-;2318:6;;2294:4;;-1:-1:-1;;;;;2318:6:7;2310:49;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;;;;2376:10;;2422:6;;;2376:54;;;-1:-1:-1;;;2376:54:7;;-1:-1:-1;;;;;2376:54:7;;;;;;;;;;2422:6;;;2376:54;;;;;:10;;;;;:29;;:54;;;;;;;;;;;;;;:10;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;2376:54:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2376:54:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2376:54:7;2370:100;;-1:-1:-1;2454:5:7;2447:12;;2370:100;-1:-1:-1;2486:4:7;2235:262;;;:::o;2273:122:8:-;2332:7;2358:13;;;:8;:13;;;;;:30;;;;2273:122::o;2164:53:30:-;;;;;;;;;;;;;:::o;2655:116:8:-;2713:7;2739:13;;;:8;:13;;;;;:25;;;;2655:116::o;786:30:30:-;;;;:::o;6553:80::-;6595:34;6622:6;6596:20;6604:11;;6596:3;:7;;:20;;;;:::i;6595:34::-;6582:10;:47;6553:80::o;14836:121::-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14914:21:30;:39;;-1:-1:-1;;14914:39:30;;;;;;;;;;14836:121::o;1140:26::-;;;;:::o;211::2:-;;;;:::o;14960:52:30:-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14997:11:30;:9;:11::i;:::-;14960:52::o;1655:107:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;1205:145:76:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:76;;;1205:145::o;778:296::-;836:7;933:1;929;:5;921:14;;;;;;945:9;961:1;957;:5;;;;;;;778:296;-1:-1:-1;;;;778:296:76:o;5323:1133:30:-;5405:7;5419:8;:6;:8::i;:::-;5508:15;;5494:10;;:29;5490:943;;5530:14;5547:6;;;;;;;;;-1:-1:-1;;;;;5547:6:30;-1:-1:-1;;;;;5547:18:30;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5547:20:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5547:20:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5547:20:30;5597:30;;;-1:-1:-1;;;5597:30:30;;5621:4;5597:30;;;;;;5547:20;;-1:-1:-1;5572:22:30;;-1:-1:-1;;;;;5597:15:30;;;;;:30;;;;;5547:20;;5597:30;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;5597:30:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5597:30:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5597:30:30;5665:18;;5597:30;;-1:-1:-1;5642:19:30;:17;:19::i;:::-;:41;5633:475;;5733:21;;;;5729:45;;;5756:18;:16;:18::i;:::-;5797:30;;;-1:-1:-1;;;5797:30:30;;5821:4;5797:30;;;;;;-1:-1:-1;;;;;5797:15:30;;;;;:30;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;5797:30:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5797:30:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5797:30:30;5869:11;;5797:30;;-1:-1:-1;5850:31:30;;5797:30;;5850:31;:18;:31;:::i;:::-;5833:14;:48;5908:11;;5887:18;:32;5940:16;:3;5948:7;5940:16;:7;:16;:::i;:::-;5959:7;5940:26;5925:12;:41;6026:10;;6064:11;;6082:14;;6001:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5633:475;6131:10;;6113:15;:28;;;-1:-1:-1;6168:27:30;;;:15;:27;;;;;6221:21;;6200:42;;-1:-1:-1;;6200:42:30;6221:21;;;;6200:42;;;;;-1:-1:-1;6247:16:30;;:33;;;6289:16;;:20;6285:85;;6347:16;;6328:14;;:36;;;:18;:36;:::i;:::-;6317:8;:47;6285:85;6393:10;;6405:8;;6379:49;;;;;;;;;;;;;6415:12;6379:49;;;;;;;;;;;;;;5490:943;;;;-1:-1:-1;6444:8:30;;5323:1133;;;;:::o;8415:835::-;8585:10;;8558:15;8576:20;;;:8;:20;;;;;8648:1;8623:20;;;;:27;;;:24;:27;:::i;:::-;8600:20;;;;:50;;;;-1:-1:-1;;;;;8654:24:30;;:14;:24;;;;;;;;;;;:31;;-1:-1:-1;;8654:31:30;;;;;8689:11;:21;;;;;8713:3;8689:27;;8720:18;:28;;;;;;:35;;;:32;:35;:::i;:::-;;8804:12;8800:447;;;8845:14;;:34;;;-1:-1:-1;;;8845:34:30;;-1:-1:-1;;;;;8845:34:30;;;;;;;;;8823:19;;8845:14;;;;;:24;;:34;;;;;;;;;;;;;;;8823:19;8845:14;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;8845:34:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8845:34:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8845:34:30;8902:15;;;;8845:34;;-1:-1:-1;8902:32:30;;8845:34;8902:32;:19;:32;:::i;:::-;8884:15;;;:50;8944:33;;;;;;;;-1:-1:-1;;;;;8944:33:30;;;;;;;;;;;;;8800:447;;;;9011:15;;;;:28;;9031:7;9011:28;:19;:28;:::i;:::-;8993:15;;;:46;9082:6;;;:20;;;-1:-1:-1;;;9082:20:30;;;;9044:16;;-1:-1:-1;;;;;9082:6:30;;;;:18;;:20;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;9082:20:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9082:20:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9082:20:30;9117:33;;;-1:-1:-1;;;9117:33:30;;-1:-1:-1;;;;;9117:33:30;;;;;;;;;;;;;;;9082:20;;-1:-1:-1;9117:14:30;;;;;;:33;;;;;9082:20;;9117:33;;;;;;;;-1:-1:-1;9117:14:30;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;9117:33:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9117:33:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9117:33:30;9109:67;;;;;-1:-1:-1;;;9109:67:30;;;;;;;;;;;;-1:-1:-1;;;9109:67:30;;;;;;;;;;;;;;;9185:10;9181:62;;;9208:29;;;;;;;;-1:-1:-1;;;;;9208:29:30;;;;;;;;;;;;;9181:62;8800:447;8415:835;;;;;:::o;10584:1018::-;10636:4;10964:23;10990:32;11010:1;11013:8;10990:19;:32::i;:::-;10964:58;;11114:22;11127:8;11114:12;:22::i;:::-;:60;;;;-1:-1:-1;;;;;;11144:30:30;;;;;;:20;:30;;;;;;;;11143:31;11114:60;:88;;;;;11182:20;11193:8;11182:10;:20::i;:::-;11181:21;11114:88;11106:477;;;11212:55;11228:8;11238:15;11255:4;11261:5;11212:15;:55::i;:::-;11279:4;11272:11;;;;;11106:477;11299:22;11312:8;11299:12;:22::i;:::-;11298:23;:57;;;-1:-1:-1;;;;;;11325:30:30;;;;;;:20;:30;;;;;;;;11298:57;11294:289;;;11417:16;;:23;;11438:1;11417:23;:20;:23;:::i;:::-;11398:16;:42;-1:-1:-1;;;;;11445:30:30;;11478:5;11445:30;;;:20;:30;;;;;:38;;-1:-1:-1;;11445:38:30;;;11488:41;;11466:8;;11478:5;11445:38;11488:15;:41::i;:::-;11539:23;;-1:-1:-1;;;;;11539:23:30;;;;;;;;11574:4;11567:11;;;;;3528:804:8;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1113:51:7;;;;;;;;;;;;;;;3577:13:8;:11;:13::i;:::-;3600:11;:9;:11::i;:::-;3658:6;3635:20;3643:11;;3635:3;:7;;:20;;;;:::i;:::-;:29;;;;;;3622:10;:42;3745:6;;;:20;;;-1:-1:-1;;;3745:20:8;;;;3728:14;;-1:-1:-1;;;;;3745:6:8;;;;:18;;:20;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;3745:20:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3745:20:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3745:20:8;3780:14;;3745:20;;-1:-1:-1;3780:18:8;3776:488;;3881:6;;;3857:32;;;-1:-1:-1;;;3857:32:8;;-1:-1:-1;;;;;3881:6:8;;;3857:32;;;;;;;;:15;;;;;;:32;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;3857:32:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3857:32:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3857:32:8;3839:14;;:50;;3814:134;;;;;-1:-1:-1;;;3814:134:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3963:10;;4164:14;;4035:161;;;4137:4;4035:161;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;4035:161:8;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;4214:6:8;;;3963:290;;-1:-1:-1;;;3963:290:8;;-1:-1:-1;;;;;3963:290:8;;;;;;;;;4214:6;;;3963:290;;;;;;:10;:290;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;4011:5;;4035:161;;4214:6;;3963:10;;:290;;;;;;;;;;;25:18:-1;3963:10:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3963:290:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3963:290:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3963:290:8;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3963:290:8;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;3963:290:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3963:290:8;;420:4:-1;411:14;;;;3963:290:8;;;;;411:14:-1;3963:290:8;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3963:290:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3776:488;4289:30;;;-1:-1:-1;;;4289:30:8;;4313:4;4289:30;;;;;;4278:47;;-1:-1:-1;;;;;4289:15:8;;;;;:30;;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;4289:30:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4289:30:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4289:30:8;4278:47;;;;;;4321:3;4289:30;4278:47;;;;;;;;;;;;1174:1:7;3528:804:8:o;4572:395::-;1122:9:2;;1115:3;:16;;1107:49;;;;;-1:-1:-1;;;1107:49:2;;;;;;;;;;;;-1:-1:-1;;;1107:49:2;;;;;;;;;;;;;;;4621:14:8;4638:6;;;;;;;;;-1:-1:-1;;;;;4638:6:8;-1:-1:-1;;;;;4638:18:8;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4638:20:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4638:20:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4638:20:8;4696:30;;;-1:-1:-1;;;4696:30:8;;4720:4;4696:30;;;;;;4638:20;;-1:-1:-1;4669:24:8;;-1:-1:-1;;;;;4696:15:8;;;;;:30;;;;;4638:20;;4696:30;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;4696:30:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4696:30:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4696:30:8;;-1:-1:-1;4741:20:8;;4737:178;;4825:6;;;4802:49;;;-1:-1:-1;;;4802:49:8;;-1:-1:-1;;;;;4825:6:8;;;4802:49;;;;;;;;;;;;;;:14;;;;;;:49;;;;;;;;;;;;;;4825:6;4802:14;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;4802:49:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4802:49:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4802:49:8;4777:127;;;;;-1:-1:-1;;;4777:127:8;;;;;;;;;;;;-1:-1:-1;;;4777:127:8;;;;;;;;;;;;;;;4925:14;:12;:14::i;:::-;4949:11;:9;:11::i;:::-;1166:1:2;;4572:395:8:o;1906:183:77:-;-1:-1:-1;;;;;1979:22:77;;1971:31;;;;;;2038:6;;2017:38;;-1:-1:-1;;;;;2017:38:77;;;;2038:6;;2017:38;;2038:6;;2017:38;2065:6;:17;;-1:-1:-1;;;;;;2065:17:77;-1:-1:-1;;;;;2065:17:77;;;;;;;;;;1906:183::o;4150:557:30:-;4191:14;4208:6;;;;;;;;;-1:-1:-1;;;;;4208:6:30;-1:-1:-1;;;;;4208:18:30;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4208:20:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4208:20:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4208:20:30;4254:30;;;-1:-1:-1;;;4254:30:30;;4278:4;4254:30;;;;;;4208:20;;-1:-1:-1;4232:19:30;;-1:-1:-1;;;;;4254:15:30;;;;;:30;;;;;4208:20;;4254:30;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;4254:30:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4254:30:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4254:30:30;4333:6;;;4309:32;;;-1:-1:-1;;;4309:32:30;;-1:-1:-1;;;;;4333:6:30;;;4309:32;;;;;;;;4254:30;;-1:-1:-1;4288:18:30;;4309:15;;;;;;:32;;;;;4254:30;;4309:32;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;4309:32:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4309:32:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4309:32:30;4345:10;;4391:96;;;4461:4;4391:96;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;4391:96:30;;;;;;4309:32;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;4492:6:30;;;4345:163;;-1:-1:-1;;;4345:163:30;;-1:-1:-1;;;;;4345:163:30;;;;;;;;;4492:6;;;4345:163;;;;;;:10;:163;;;;;;;;;;;;;;;;;;;;;4309:32;;-1:-1:-1;4345:10:30;;;;;:22;;4380:5;;4391:96;;4492:6;;4345:163;;;;;;;;;;;25:18:-1;4345:10:30;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4345:163:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4345:163:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4345:163:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4345:163:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;4345:163:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;4345:163:30;;420:4:-1;411:14;;;;4345:163:30;;;;;411:14:-1;4345:163:30;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4345:163:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4512:18;4533:27;4549:10;4533:11;:15;;:27;;;;:::i;:::-;4590:30;;;-1:-1:-1;;;4590:30:30;;4614:4;4590:30;;;;;;4512:48;;-1:-1:-1;;;;;;4590:15:30;;;;;:30;;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;4590:30:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4590:30:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4590:30:30;4576:44;;4564:90;;;;;-1:-1:-1;;;4564:90:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:40;;;;;;;;;;;;;;;;;;;;;;;;;4150:557;;;;:::o;1431:145:76:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:76:o;2010:134:2:-;918:11;;911:3;:18;;:37;;;;;939:9;;933:3;:15;911:37;903:63;;;;;-1:-1:-1;;;903:63:2;;;;;;;;;;;;-1:-1:-1;;;903:63:2;;;;;;;;;;;;;;;708:8;;;;707:9;699:40;;;;;-1:-1:-1;;;699:40:2;;;;;;;;;;;;-1:-1:-1;;;699:40:2;;;;;;;;;;;;;;;2077:8;:15;;-1:-1:-1;;2077:15:2;2088:4;2077:15;;;2107:30;;;2133:3;2107:30;;;;2121:10;;2107:30;;;;;;;;;;2010:134::o;786:280:5:-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1113:51:7;;;;;;;;;;;;;;;841:10:5;;885:8;;908:62;;;964:4;908:62;;;;;;;;;;26:21:-1;;;22:32;;6:49;;908:62:5;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;984:6:5;;;841:174;;-1:-1:-1;;;841:174:5;;-1:-1:-1;;;;;885:8:5;;;841:174;;;;;;984:6;;;841:174;;;;;;:10;:174;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;885:8;;908:62;;984:6;841:10;;:174;;;;;;;;;;25:18:-1;841:10:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;841:174:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;841:174:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;841:174:5;;;;;;39:16:-1;36:1;17:17;2:54;101:4;841:174:5;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;841:174:5;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;841:174:5;;420:4:-1;411:14;;;;841:174:5;;;;;411:14:-1;841:174:5;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;841:174:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;841:174:5;;-1:-1:-1;;1051:6:5;;1025:34;;-1:-1:-1;;;;;;1051:6:5;;-1:-1:-1;1025:17:5;;-1:-1:-1;1025:34:5:i;1195:242::-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1113:51:7;;;;;;;;;;;;;;;1253:10:5;;1297:8;;1320:65;;;1379:4;1320:65;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1320:65:5;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1399:6:5;;;1253:177;;-1:-1:-1;;;1253:177:5;;-1:-1:-1;;;;;1297:8:5;;;1253:177;;;;;;1399:6;;;1253:177;;;;;;:10;:177;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;1297:8;;1320:65;;1399:6;1253:10;;:177;;;;;;;;;;25:18:-1;1253:10:5;33:3:-1;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2342:82:2;1122:9;;1115:3;:16;;1107:49;;;;;-1:-1:-1;;;1107:49:2;;;;;;;;;;;;-1:-1:-1;;;1107:49:2;;;;;;;;;;;;;;;2410:6;;2398:19;;-1:-1:-1;;;;;2410:6:2;;;;;544:8;;536:34;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;-1:-1:-1;;;536:34:2;;;;;;;;;;;;;;;2795:8;:16;;-1:-1:-1;;2795:16:2;;;2826:28;;;2850:3;2826:28;;;;2838:10;;2826:28;;;;;;;;;;2885:7;-1:-1:-1;;;;;2864:30:2;",
  "source": "pragma solidity >0.5.4;\n\nimport \"../../contracts/dao/schemes/UBI.sol\";\nimport \"./FirstClaimPool.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n/* @title Dynamic amount-per-day UBI scheme allowing claim once a day\n */\ncontract UBIScheme is AbstractUBI {\n\tusing SafeMath for uint256;\n\n\t// Result of distribution formula\n\t// calculated each day\n\tuint256 public dailyUbi;\n\n\t// Limits the gas for each iteration at `fishMulti`\n\tuint256 public iterationGasLimit = 150000;\n\n\t// Tracks the active users number. It changes when\n\t// a new user claim for the first time or when a user\n\t// has been fished\n\tuint256 public activeUsersCount;\n\n\t// Tracks the last withdrawal day of funds from avatar.\n\t// Withdraw occures on the first daily claim or the\n\t// first daily fish only\n\tuint256 public lastWithdrawDay;\n\n\t// How long can a user be inactive.\n\t// After those days the user can be fished\n\t// (see `fish` notes)\n\tuint256 public maxInactiveDays;\n\n\t// Whether to withdraw GD from avatar\n\t// before daily ubi calculation\n\tbool public shouldWithdrawFromDAO;\n\n\t//number of days of each UBI pool cycle\n\t//dailyPool = Pool/cycleLength\n\tuint256 public cycleLength;\n\n\t//the amount of G$ UBI pool for each day in the cycle to be divided by active users\n\tuint256 public dailyCyclePool;\n\n\t//timestamp of current cycle start\n\tuint256 public startOfCycle;\n\n\t//should be 0 for starters so distributionFormula detects new cycle on first day claim\n\tuint256 public currentCycleLength;\n\n\t// A pool of GD to give to activated users,\n\t// since they will enter the UBI pool\n\t// calculations only in the next day,\n\t// meaning they can only claim in the next\n\t// day\n\tFirstClaimPool public firstClaimPool;\n\n\tstruct Funds {\n\t\t// marks if the funds for a specific day has\n\t\t// withdrawn from avatar\n\t\tbool hasWithdrawn;\n\t\t// total GD held after withdrawing\n\t\tuint256 openAmount;\n\t}\n\n\t// Tracks the daily withdraws and the actual amount\n\t// at the begining of a trading day\n\tmapping(uint256 => Funds) public dailyUBIHistory;\n\n\t// Marks users that have been fished to avoid\n\t// double fishing\n\tmapping(address => bool) public fishedUsersAddresses;\n\n\t// Total claims per user stat\n\tmapping(address => uint256) public totalClaimsPerUser;\n\n\t// Emits when a withdraw has been succeded\n\tevent WithdrawFromDao(uint256 prevBalance, uint256 newBalance);\n\n\t// Emits when a user is activated\n\tevent ActivatedUser(address indexed account);\n\n\t// Emits when a fish has been succeded\n\tevent InactiveUserFished(\n\t\taddress indexed caller,\n\t\taddress indexed fished_account,\n\t\tuint256 claimAmount\n\t);\n\n\t// Emits when finishing a `multi fish` execution.\n\t// Indicates the number of users from the given\n\t// array who actually been fished. it might not\n\t// be finished going over all the array if there\n\t// no gas left.\n\tevent TotalFished(uint256 total);\n\n\t// Emits when daily ubi is calculated\n\tevent UBICalculated(uint256 day, uint256 dailyUbi, uint256 blockNumber);\n\n\tevent UBICycleCalculated(\n\t\tuint256 day,\n\t\tuint256 pool,\n\t\tuint256 cycleLength,\n\t\tuint256 dailyUBIPool\n\t);\n\n\tmodifier requireStarted() {\n\t\trequire(now >= periodStart, \"not in periodStarted\");\n\t\t_;\n\t}\n\n\t/**\n\t * @dev Constructor\n\t * @param _avatar The avatar of the DAO\n\t * @param _identity The identity contract\n\t * @param _firstClaimPool A pool for GD to give out to activated users\n\t * @param _periodStart The time from when the contract can start\n\t * @param _periodEnd The time from when the contract can end\n\t * @param _maxInactiveDays Days of grace without claiming request\n\t */\n\tconstructor(\n\t\tAvatar _avatar,\n\t\tIdentity _identity,\n\t\tFirstClaimPool _firstClaimPool,\n\t\tuint256 _periodStart,\n\t\tuint256 _periodEnd,\n\t\tuint256 _maxInactiveDays,\n\t\tuint256 _cycleLength\n\t) public AbstractUBI(_avatar, _identity, 0, _periodStart, _periodEnd) {\n\t\trequire(_maxInactiveDays > 0, \"Max inactive days cannot be zero\");\n\n\t\tmaxInactiveDays = _maxInactiveDays;\n\t\tfirstClaimPool = _firstClaimPool;\n\t\tshouldWithdrawFromDAO = false;\n\t\tcycleLength = _cycleLength;\n\t}\n\n\t/**\n\t * @dev On a daily basis UBIScheme withdraws tokens from GoodDao.\n\t * Emits event with caller address and last day balance and the\n\t * updated balance.\n\t */\n\tfunction _withdrawFromDao() internal {\n\t\tDAOToken token = avatar.nativeToken();\n\t\tuint256 prevBalance = token.balanceOf(address(this));\n\t\tuint256 toWithdraw = token.balanceOf(address(avatar));\n\t\tcontroller.genericCall(\n\t\t\taddress(token),\n\t\t\tabi.encodeWithSignature(\n\t\t\t\t\"transfer(address,uint256)\",\n\t\t\t\taddress(this),\n\t\t\t\ttoWithdraw\n\t\t\t),\n\t\t\tavatar,\n\t\t\t0\n\t\t);\n\t\tuint256 newBalance = prevBalance.add(toWithdraw);\n\t\trequire(\n\t\t\tnewBalance == token.balanceOf(address(this)),\n\t\t\t\"DAO transfer has failed\"\n\t\t);\n\t\temit WithdrawFromDao(prevBalance, newBalance);\n\t}\n\n\t/**\n\t * @dev sets the ubi calculation cycle length\n\t * @param _newLength the new length in days\n\t */\n\tfunction setCycleLength(uint256 _newLength) public onlyAvatar {\n\t\trequire(_newLength > 0, \"cycle must be at least 1 day long\");\n\t\tcycleLength = _newLength;\n\t}\n\n\t/**\n\t * @dev returns the day count since start of current cycle\n\t */\n\tfunction currentDayInCycle() public view returns (uint256) {\n\t\treturn now.sub(startOfCycle).div(1 days);\n\t}\n\n\t/**\n\t * @dev The claim calculation formula. Divided the daily balance with\n\t * the sum of the active users.\n\t * @return The amount of GoodDollar the user can claim\n\t */\n\tfunction distributionFormula(uint256 reserve, address user)\n\t\tinternal\n\t\treturns (uint256)\n\t{\n\t\tsetDay();\n\t\t// on first day or once in 24 hrs calculate distribution\n\t\tif (currentDay != lastWithdrawDay) {\n\t\t\tDAOToken token = avatar.nativeToken();\n\t\t\tuint256 currentBalance = token.balanceOf(address(this));\n\n\t\t\tif (\n\t\t\t\tcurrentDayInCycle() >= currentCycleLength\n\t\t\t) //start of cycle or first time\n\t\t\t{\n\t\t\t\tif (shouldWithdrawFromDAO) _withdrawFromDao();\n\t\t\t\tcurrentBalance = token.balanceOf(address(this));\n\t\t\t\tdailyCyclePool = currentBalance.div(cycleLength);\n\t\t\t\tcurrentCycleLength = cycleLength;\n\t\t\t\tstartOfCycle = now.div(1 hours) * 1 hours; //start at a round hour\n\t\t\t\temit UBICycleCalculated(\n\t\t\t\t\tcurrentDay,\n\t\t\t\t\tcurrentBalance,\n\t\t\t\t\tcycleLength,\n\t\t\t\t\tdailyCyclePool\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlastWithdrawDay = currentDay;\n\t\t\tFunds storage funds = dailyUBIHistory[currentDay];\n\t\t\tfunds.hasWithdrawn = shouldWithdrawFromDAO;\n\t\t\tfunds.openAmount = currentBalance;\n\t\t\tif (activeUsersCount > 0) {\n\t\t\t\tdailyUbi = dailyCyclePool.div(activeUsersCount);\n\t\t\t}\n\t\t\temit UBICalculated(currentDay, dailyUbi, block.number);\n\t\t}\n\n\t\treturn dailyUbi;\n\t}\n\n\t/**\n\t *@dev Sets the currentDay variable to amount of days\n\t * since start of contract.\n\t */\n\tfunction setDay() public {\n\t\tcurrentDay = (now.sub(periodStart)).div(1 days);\n\t}\n\n\t/**\n\t * @dev Checks if the given account has claimed today\n\t * @param account to check\n\t * @return True if the given user has already claimed today\n\t */\n\tfunction hasClaimed(address account) public view returns (bool) {\n\t\treturn claimDay[currentDay].hasClaimed[account];\n\t}\n\n\t/**\n\t * @dev Checks if the given account has been owned by a registered user.\n\t * @param _account to check\n\t * @return True for an existing user. False for a new user\n\t */\n\tfunction isNotNewUser(address _account) public view returns (bool) {\n\t\tuint256 lastClaimed = lastClaimed[_account];\n\t\tif (lastClaimed > 0) {\n\t\t\t// the sender is not registered\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @dev Checks weather the given address is owned by an active user.\n\t * A registered user is a user that claimed at least one time. An\n\t * active user is a user that claimed at least one time but claimed\n\t * at least one time in the last `maxInactiveDays` days. A user that\n\t * has not claimed for `maxInactiveDays` is an inactive user.\n\t * @param _account to check\n\t * @return True for active user\n\t */\n\tfunction isActiveUser(address _account) public view returns (bool) {\n\t\tuint256 lastClaimed = lastClaimed[_account];\n\t\tif (isNotNewUser(_account)) {\n\t\t\tuint256 daysSinceLastClaim = now.sub(lastClaimed).div(1 days);\n\t\t\tif (daysSinceLastClaim < maxInactiveDays) {\n\t\t\t\t// active user\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @dev Transfers `amount` DAO tokens to `account`. Updates stats\n\t * and emits an event in case of claimed.\n\t * In case that `isFirstTime` is true, it awards the user.\n\t * @param _account the account which recieves the funds\n\t * @param _amount the amount to transfer\n\t * @param _isClaimed true for claimed\n\t * @param _isFirstTime true for new user or fished user\n\t */\n\tfunction _transferTokens(\n\t\taddress _account,\n\t\tuint256 _amount,\n\t\tbool _isClaimed,\n\t\tbool _isFirstTime\n\t) internal {\n\t\t// updates the stats\n\t\tDay storage day = claimDay[currentDay];\n\t\tday.amountOfClaimers = day.amountOfClaimers.add(1);\n\t\tday.hasClaimed[_account] = true;\n\t\tlastClaimed[_account] = now;\n\t\ttotalClaimsPerUser[_account].add(1);\n\n\t\t// awards a new user or a fished user\n\t\tif (_isFirstTime) {\n\t\t\tuint256 awardAmount = firstClaimPool.awardUser(_account);\n\t\t\tday.claimAmount = day.claimAmount.add(awardAmount);\n\t\t\temit UBIClaimed(_account, awardAmount);\n\t\t} else {\n\t\t\tday.claimAmount = day.claimAmount.add(_amount);\n\t\t\tGoodDollar token = GoodDollar(address(avatar.nativeToken()));\n\t\t\trequire(token.transfer(_account, _amount), \"claim transfer failed\");\n\t\t\tif (_isClaimed) {\n\t\t\t\temit UBIClaimed(_account, _amount);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @dev Checks the amount which the sender address is eligible to claim for,\n\t * regardless if they have been whitelisted or not. In case the user is\n\t * active, then the current day must be equal to the actual day, i.e. claim\n\t * or fish has already been executed today.\n\t * @return The amount of GD tokens the address can claim.\n\t */\n\tfunction checkEntitlement() public view requireActive returns (uint256) {\n\t\t// new user or inactive should recieve the first claim reward\n\t\tif (!isNotNewUser(msg.sender) || fishedUsersAddresses[msg.sender]) {\n\t\t\treturn firstClaimPool.claimAmount();\n\t\t}\n\n\t\t// current day has already been updated which means\n\t\t// that the dailyUbi has been updated\n\t\tif (currentDay == (now.sub(periodStart)).div(1 days)) {\n\t\t\treturn hasClaimed(msg.sender) ? 0 : dailyUbi;\n\t\t}\n\t\t// the current day has not updated yet\n\t\tDAOToken token = avatar.nativeToken();\n\t\tuint256 currentBalance = token.balanceOf(address(this));\n\t\treturn currentBalance.div(activeUsersCount);\n\t}\n\n\t/**\n\t * @dev Function for claiming UBI. Requires contract to be active. Calls distributionFormula,\n\t * calculats the amount the account can claims, and transfers the amount to the account.\n\t * Emits the address of account and amount claimed.\n\t * @param _account The claimer account\n\t * @return A bool indicating if UBI was claimed\n\t */\n\tfunction _claim(address _account) internal returns (bool) {\n\t\t// calculats the formula up today ie on day 0 there are no active users, on day 1 any user\n\t\t// (new or active) will trigger the calculation with the active users count of the day before\n\t\t// and so on. the new or inactive users that will become active today, will not take into account\n\t\t// within the calculation.\n\t\tuint256 newDistribution = distributionFormula(0, _account);\n\n\t\t// active user which has not claimed today yet, ie user last claimed < today\n\t\tif (\n\t\t\tisNotNewUser(_account) &&\n\t\t\t!fishedUsersAddresses[_account] &&\n\t\t\t!hasClaimed(_account)\n\t\t) {\n\t\t\t_transferTokens(_account, newDistribution, true, false);\n\t\t\treturn true;\n\t\t} else if (!isNotNewUser(_account) || fishedUsersAddresses[_account]) {\n\t\t\t// a unregistered or fished user\n\t\t\tactiveUsersCount = activeUsersCount.add(1);\n\t\t\tfishedUsersAddresses[_account] = false;\n\t\t\t_transferTokens(_account, 0, false, true);\n\t\t\temit ActivatedUser(_account);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @dev Function for claiming UBI. Requires contract to be active and claimer to be whitelisted.\n\t * Calls distributionFormula, calculats the amount the caller can claim, and transfers the amount\n\t * to the caller. Emits the address of caller and amount claimed.\n\t * @return A bool indicating if UBI was claimed\n\t */\n\tfunction claim()\n\t\tpublic\n\t\trequireStarted\n\t\trequireActive\n\t\tonlyWhitelisted\n\t\treturns (bool)\n\t{\n\t\treturn _claim(msg.sender);\n\t}\n\n\t/**\n\t * @dev In order to update users from active to inactive, we give out incentive to people\n\t * to update the status of inactive users, this action is called \"Fishing\". Anyone can\n\t * send a tx to the contract to mark inactive users. The \"fisherman\" receives a reward\n\t * equal to the daily UBI (ie instead of the “fished” user). User that “last claimed” > 14\n\t * can be \"fished\" and made inactive (reduces active users count by one). Requires\n\t * contract to be active.\n\t * @param _account to fish\n\t * @return A bool indicating if UBI was fished\n\t */\n\tfunction fish(address _account) public requireActive returns (bool) {\n\t\t// checking if the account exists. that's been done because that\n\t\t// will prevent trying to fish non-existence accounts in the system\n\t\trequire(\n\t\t\tisNotNewUser(_account) && !isActiveUser(_account),\n\t\t\t\"is not an inactive user\"\n\t\t);\n\t\trequire(!fishedUsersAddresses[_account], \"already fished\");\n\t\tfishedUsersAddresses[_account] = true; // marking the account as fished so it won't refish\n\n\t\t// making sure that the calculation will be with the correct number of active users in case\n\t\t// that the fisher is the first to make the calculation today\n\t\tuint256 newDistribution = distributionFormula(0, _account);\n\t\tactiveUsersCount = activeUsersCount.sub(1);\n\t\t_transferTokens(msg.sender, newDistribution, false, false);\n\t\temit InactiveUserFished(msg.sender, _account, newDistribution);\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev executes `fish` with multiple addresses. emits the number of users from the given\n\t * array who actually been tried being fished.\n\t * @param _accounts to fish\n\t * @return A bool indicating if all the UBIs were fished\n\t */\n\tfunction fishMulti(address[] memory _accounts)\n\t\tpublic\n\t\trequireActive\n\t\treturns (uint256)\n\t{\n\t\tfor (uint256 i = 0; i < _accounts.length; ++i) {\n\t\t\tif (gasleft() < iterationGasLimit) {\n\t\t\t\temit TotalFished(i);\n\t\t\t\treturn i;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tisNotNewUser(_accounts[i]) &&\n\t\t\t\t!isActiveUser(_accounts[i]) &&\n\t\t\t\t!fishedUsersAddresses[_accounts[i]]\n\t\t\t) {\n\t\t\t\trequire(fish(_accounts[i]), \"fish has failed\");\n\t\t\t}\n\t\t}\n\t\temit TotalFished(_accounts.length);\n\t\treturn _accounts.length;\n\t}\n\n\t/**\n\t * @dev Start function. Adds this contract to identity as a feeless scheme and\n\t * adds permissions to FirstClaimPool\n\t * Can only be called if scheme is registered\n\t */\n\tfunction start() public onlyRegistered {\n\t\tsuper.start();\n\t\tperiodStart = now.div(1 days) * 1 days + 12 hours; //set start time to GMT noon\n\t\tstartOfCycle = periodStart;\n\t\tcontroller.genericCall(\n\t\t\taddress(firstClaimPool),\n\t\t\tabi.encodeWithSignature(\"setUBIScheme(address)\", address(this)),\n\t\t\tavatar,\n\t\t\t0\n\t\t);\n\t}\n\n\t/**\n\t * @dev Sets whether to also withdraw GD from avatar for UBI\n\t * @param _shouldWithdraw boolean if to withdraw\n\t */\n\tfunction setShouldWithdrawFromDAO(bool _shouldWithdraw) public onlyAvatar {\n\t\tshouldWithdrawFromDAO = _shouldWithdraw;\n\t}\n\n\tfunction end() public onlyAvatar {\n\t\tsuper.end();\n\t}\n\n\tfunction upgrade(address prevUBIScheme) public onlyRegistered {\n\t\tstart();\n\n\t\tif (prevUBIScheme != address(0)) {\n\t\t\tGoodDollar gd = GoodDollar(address(avatar.nativeToken()));\n\n\t\t\tuint256 ubiBalance = gd.balanceOf(prevUBIScheme);\n\n\t\t\t// transfer funds from old scheme here\n\t\t\tcontroller.genericCall(\n\t\t\t\tprevUBIScheme,\n\t\t\t\tabi.encodeWithSignature(\"end()\"),\n\t\t\t\tavatar,\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tcontroller.genericCall(\n\t\t\t\taddress(firstClaimPool),\n\t\t\t\tabi.encodeWithSignature(\"setClaimAmount(uint256)\", 1000),\n\t\t\t\tavatar,\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tif (ubiBalance > 0) {\n\t\t\t\tcontroller.externalTokenTransfer(\n\t\t\t\t\tgd,\n\t\t\t\t\taddress(this),\n\t\t\t\t\tubiBalance,\n\t\t\t\t\tavatar\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/UBIScheme.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/UBIScheme.sol",
    "exportedSymbols": {
      "UBIScheme": [
        10762
      ]
    },
    "id": 10763,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9742,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:30"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/UBI.sol",
        "file": "../../contracts/dao/schemes/UBI.sol",
        "id": 9743,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 1868,
        "src": "25:45:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/FirstClaimPool.sol",
        "file": "./FirstClaimPool.sol",
        "id": 9744,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 6960,
        "src": "71:30:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 9745,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 21309,
        "src": "102:59:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9746,
              "name": "AbstractUBI",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1785,
              "src": "259:11:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractUBI_$1785",
                "typeString": "contract AbstractUBI"
              }
            },
            "id": 9747,
            "nodeType": "InheritanceSpecifier",
            "src": "259:11:30"
          }
        ],
        "contractDependencies": [
          1004,
          1227,
          1423,
          1785,
          2667,
          21417
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10762,
        "linearizedBaseContracts": [
          10762,
          1785,
          1227,
          2667,
          1423,
          21417,
          1004
        ],
        "name": "UBIScheme",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9750,
            "libraryName": {
              "contractScope": null,
              "id": 9748,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "280:8:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "274:27:30",
            "typeName": {
              "id": 9749,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "293:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 9752,
            "name": "dailyUbi",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "363:23:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9751,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "363:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9755,
            "name": "iterationGasLimit",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "443:41:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9753,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "443:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "313530303030",
              "id": 9754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "478:6:30",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_150000_by_1",
                "typeString": "int_const 150000"
              },
              "value": "150000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9757,
            "name": "activeUsersCount",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "615:31:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9756,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "615:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9759,
            "name": "lastWithdrawDay",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "786:30:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9758,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "786:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9761,
            "name": "maxInactiveDays",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "924:30:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9760,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "924:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9763,
            "name": "shouldWithdrawFromDAO",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1030:33:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 9762,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1030:4:30",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9765,
            "name": "cycleLength",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1140:26:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9764,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1140:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9767,
            "name": "dailyCyclePool",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1255:29:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9766,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1255:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9769,
            "name": "startOfCycle",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1324:27:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9768,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1324:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9771,
            "name": "currentCycleLength",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1443:33:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9770,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1443:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9773,
            "name": "firstClaimPool",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1655:36:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
              "typeString": "contract FirstClaimPool"
            },
            "typeName": {
              "contractScope": null,
              "id": 9772,
              "name": "FirstClaimPool",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6959,
              "src": "1655:14:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                "typeString": "contract FirstClaimPool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "UBIScheme.Funds",
            "id": 9778,
            "members": [
              {
                "constant": false,
                "id": 9775,
                "name": "hasWithdrawn",
                "nodeType": "VariableDeclaration",
                "scope": 9778,
                "src": "1786:17:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 9774,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1786:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9777,
                "name": "openAmount",
                "nodeType": "VariableDeclaration",
                "scope": 9778,
                "src": "1844:18:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 9776,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1844:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Funds",
            "nodeType": "StructDefinition",
            "scope": 10762,
            "src": "1695:171:30",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9782,
            "name": "dailyUBIHistory",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1959:48:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
              "typeString": "mapping(uint256 => struct UBIScheme.Funds)"
            },
            "typeName": {
              "id": 9781,
              "keyType": {
                "id": 9779,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1967:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1959:25:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
                "typeString": "mapping(uint256 => struct UBIScheme.Funds)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9780,
                "name": "Funds",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9778,
                "src": "1978:5:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                  "typeString": "struct UBIScheme.Funds"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9786,
            "name": "fishedUsersAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "2077:52:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 9785,
              "keyType": {
                "id": 9783,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2085:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2077:24:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 9784,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2096:4:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9790,
            "name": "totalClaimsPerUser",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "2164:53:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 9789,
              "keyType": {
                "id": 9787,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2172:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2164:27:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 9788,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2183:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9796,
            "name": "WithdrawFromDao",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9792,
                  "indexed": false,
                  "name": "prevBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 9796,
                  "src": "2287:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2287:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9794,
                  "indexed": false,
                  "name": "newBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 9796,
                  "src": "2308:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9793,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2308:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2286:41:30"
            },
            "src": "2265:63:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9800,
            "name": "ActivatedUser",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9798,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 9800,
                  "src": "2386:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2386:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2385:25:30"
            },
            "src": "2366:45:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9808,
            "name": "InactiveUserFished",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9802,
                  "indexed": true,
                  "name": "caller",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2482:22:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2482:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9804,
                  "indexed": true,
                  "name": "fished_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2508:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9806,
                  "indexed": false,
                  "name": "claimAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2542:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2542:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2478:86:30"
            },
            "src": "2454:111:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9812,
            "name": "TotalFished",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9810,
                  "indexed": false,
                  "name": "total",
                  "nodeType": "VariableDeclaration",
                  "scope": 9812,
                  "src": "2802:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9809,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2801:15:30"
            },
            "src": "2784:33:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9820,
            "name": "UBICalculated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9814,
                  "indexed": false,
                  "name": "day",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2879:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9813,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2879:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9816,
                  "indexed": false,
                  "name": "dailyUbi",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2892:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9815,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2892:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9818,
                  "indexed": false,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2910:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2910:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2878:52:30"
            },
            "src": "2859:72:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9830,
            "name": "UBICycleCalculated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9822,
                  "indexed": false,
                  "name": "day",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2962:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2962:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9824,
                  "indexed": false,
                  "name": "pool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2977:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2977:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9826,
                  "indexed": false,
                  "name": "cycleLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2993:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9825,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2993:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9828,
                  "indexed": false,
                  "name": "dailyUBIPool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "3016:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9827,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3016:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2958:81:30"
            },
            "src": "2934:106:30"
          },
          {
            "body": {
              "id": 9840,
              "nodeType": "Block",
              "src": "3069:64:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9833,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22173,
                          "src": "3081:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9834,
                          "name": "periodStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 855,
                          "src": "3088:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3081:18:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420696e20706572696f6453746172746564",
                        "id": 9836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3101:22:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2e7c4f3ea76983b927b0e2ac51ecaf0769bbdcbe7b5c192a4d192b7d1bd91a0d",
                          "typeString": "literal_string \"not in periodStarted\""
                        },
                        "value": "not in periodStarted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2e7c4f3ea76983b927b0e2ac51ecaf0769bbdcbe7b5c192a4d192b7d1bd91a0d",
                          "typeString": "literal_string \"not in periodStarted\""
                        }
                      ],
                      "id": 9832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "3073:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3073:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9838,
                  "nodeType": "ExpressionStatement",
                  "src": "3073:51:30"
                },
                {
                  "id": 9839,
                  "nodeType": "PlaceholderStatement",
                  "src": "3128:1:30"
                }
              ]
            },
            "documentation": null,
            "id": 9841,
            "name": "requireStarted",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3066:2:30"
            },
            "src": "3043:90:30",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9888,
              "nodeType": "Block",
              "src": "3773:211:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9866,
                          "name": "_maxInactiveDays",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9853,
                          "src": "3785:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3804:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3785:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d617820696e61637469766520646179732063616e6e6f74206265207a65726f",
                        "id": 9869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3807:34:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c8035e82871b9184746d3ffad7395fd870b53108eac29528a2c48cf392e3fe23",
                          "typeString": "literal_string \"Max inactive days cannot be zero\""
                        },
                        "value": "Max inactive days cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c8035e82871b9184746d3ffad7395fd870b53108eac29528a2c48cf392e3fe23",
                          "typeString": "literal_string \"Max inactive days cannot be zero\""
                        }
                      ],
                      "id": 9865,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "3777:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3777:65:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9871,
                  "nodeType": "ExpressionStatement",
                  "src": "3777:65:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9872,
                      "name": "maxInactiveDays",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9761,
                      "src": "3847:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9873,
                      "name": "_maxInactiveDays",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9853,
                      "src": "3865:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3847:34:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9875,
                  "nodeType": "ExpressionStatement",
                  "src": "3847:34:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9876,
                      "name": "firstClaimPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9773,
                      "src": "3885:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                        "typeString": "contract FirstClaimPool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9877,
                      "name": "_firstClaimPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9847,
                      "src": "3902:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                        "typeString": "contract FirstClaimPool"
                      }
                    },
                    "src": "3885:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                      "typeString": "contract FirstClaimPool"
                    }
                  },
                  "id": 9879,
                  "nodeType": "ExpressionStatement",
                  "src": "3885:32:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9880,
                      "name": "shouldWithdrawFromDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9763,
                      "src": "3921:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 9881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3945:5:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3921:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9883,
                  "nodeType": "ExpressionStatement",
                  "src": "3921:29:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9884,
                      "name": "cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9765,
                      "src": "3954:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9885,
                      "name": "_cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9855,
                      "src": "3968:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3954:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9887,
                  "nodeType": "ExpressionStatement",
                  "src": "3954:26:30"
                }
              ]
            },
            "documentation": "@dev Constructor\n@param _avatar The avatar of the DAO\n@param _identity The identity contract\n@param _firstClaimPool A pool for GD to give out to activated users\n@param _periodStart The time from when the contract can start\n@param _periodEnd The time from when the contract can end\n@param _maxInactiveDays Days of grace without claiming request",
            "id": 9889,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9858,
                    "name": "_avatar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9843,
                    "src": "3724:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9859,
                    "name": "_identity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9845,
                    "src": "3733:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3744:1:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  {
                    "argumentTypes": null,
                    "id": 9861,
                    "name": "_periodStart",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9849,
                    "src": "3747:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9862,
                    "name": "_periodEnd",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9851,
                    "src": "3761:10:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 9863,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9857,
                  "name": "AbstractUBI",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1785,
                  "src": "3712:11:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_AbstractUBI_$1785_$",
                    "typeString": "type(contract AbstractUBI)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3712:60:30"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9843,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3533:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12705",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9842,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12705,
                    "src": "3533:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9845,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3551:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$2380",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9844,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2380,
                    "src": "3551:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9847,
                  "name": "_firstClaimPool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3573:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                    "typeString": "contract FirstClaimPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9846,
                    "name": "FirstClaimPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6959,
                    "src": "3573:14:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                      "typeString": "contract FirstClaimPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9849,
                  "name": "_periodStart",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3607:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3607:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9851,
                  "name": "_periodEnd",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3631:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3631:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9853,
                  "name": "_maxInactiveDays",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3653:24:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9855,
                  "name": "_cycleLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3681:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3681:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3529:175:30"
            },
            "returnParameters": {
              "id": 9864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3773:0:30"
            },
            "scope": 10762,
            "src": "3518:466:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9958,
              "nodeType": "Block",
              "src": "4187:520:30",
              "statements": [
                {
                  "assignments": [
                    9893
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9893,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4191:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                        "typeString": "contract DAOToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9892,
                        "name": "DAOToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14470,
                        "src": "4191:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9897,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9894,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "4208:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 9895,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nativeToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12441,
                      "src": "4208:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                        "typeString": "function () view external returns (contract DAOToken)"
                      }
                    },
                    "id": 9896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4208:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOToken_$14470",
                      "typeString": "contract DAOToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4191:37:30"
                },
                {
                  "assignments": [
                    9899
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9899,
                      "name": "prevBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4232:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9898,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4232:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9906,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9903,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22329,
                            "src": "4278:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          ],
                          "id": 9902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4270:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4270:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9900,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9893,
                        "src": "4254:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 9901,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "4254:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4254:30:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4232:52:30"
                },
                {
                  "assignments": [
                    9908
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9908,
                      "name": "toWithdraw",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4288:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9907,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4288:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9915,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9912,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "4333:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$12705",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$12705",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 9911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4325:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4325:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9909,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9893,
                        "src": "4309:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 9910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "4309:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4309:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4288:53:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9920,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9893,
                            "src": "4380:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            }
                          ],
                          "id": 9919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4372:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4372:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "7472616e7366657228616464726573732c75696e7432353629",
                            "id": 9924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4420:27:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                              "typeString": "literal_string \"transfer(address,uint256)\""
                            },
                            "value": "transfer(address,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9926,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22329,
                                "src": "4461:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              ],
                              "id": 9925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4453:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 9927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4453:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9928,
                            "name": "toWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9908,
                            "src": "4472:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                              "typeString": "literal_string \"transfer(address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9922,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "4391:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 9923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4391:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 9929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4391:96:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9930,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "4492:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4503:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9916,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1286,
                        "src": "4345:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 9918,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "genericCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14271,
                      "src": "4345:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                      }
                    },
                    "id": 9932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4345:163:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "id": 9933,
                  "nodeType": "ExpressionStatement",
                  "src": "4345:163:30"
                },
                {
                  "assignments": [
                    9935
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9935,
                      "name": "newBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4512:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9934,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4512:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9940,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9938,
                        "name": "toWithdraw",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9908,
                        "src": "4549:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9936,
                        "name": "prevBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9899,
                        "src": "4533:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "4533:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4512:48:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9942,
                          "name": "newBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9935,
                          "src": "4576:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9946,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22329,
                                  "src": "4614:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                ],
                                "id": 9945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4606:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 9947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4606:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9943,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9893,
                              "src": "4590:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "id": 9944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "4590:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 9948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4590:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4576:44:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "44414f207472616e7366657220686173206661696c6564",
                        "id": 9950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4625:25:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7403f0218db35024dba3b7afc5d5f0cf21a4bc495004386607c395037ca5e763",
                          "typeString": "literal_string \"DAO transfer has failed\""
                        },
                        "value": "DAO transfer has failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7403f0218db35024dba3b7afc5d5f0cf21a4bc495004386607c395037ca5e763",
                          "typeString": "literal_string \"DAO transfer has failed\""
                        }
                      ],
                      "id": 9941,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "4564:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4564:90:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9952,
                  "nodeType": "ExpressionStatement",
                  "src": "4564:90:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9954,
                        "name": "prevBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9899,
                        "src": "4679:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9955,
                        "name": "newBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9935,
                        "src": "4692:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9953,
                      "name": "WithdrawFromDao",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9796,
                      "src": "4663:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 9956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4663:40:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9957,
                  "nodeType": "EmitStatement",
                  "src": "4658:45:30"
                }
              ]
            },
            "documentation": "@dev On a daily basis UBIScheme withdraws tokens from GoodDao.\nEmits event with caller address and last day balance and the\nupdated balance.",
            "id": 9959,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_withdrawFromDao",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4175:2:30"
            },
            "returnParameters": {
              "id": 9891,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4187:0:30"
            },
            "scope": 10762,
            "src": "4150:557:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9977,
              "nodeType": "Block",
              "src": "4874:96:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9967,
                          "name": "_newLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9961,
                          "src": "4886:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4899:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4886:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6379636c65206d757374206265206174206c65617374203120646179206c6f6e67",
                        "id": 9970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4902:35:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4bb6d9927e3f803f33b9aed770e451e0834520a0358f260abbccaa1fac228c59",
                          "typeString": "literal_string \"cycle must be at least 1 day long\""
                        },
                        "value": "cycle must be at least 1 day long"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4bb6d9927e3f803f33b9aed770e451e0834520a0358f260abbccaa1fac228c59",
                          "typeString": "literal_string \"cycle must be at least 1 day long\""
                        }
                      ],
                      "id": 9966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "4878:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4878:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9972,
                  "nodeType": "ExpressionStatement",
                  "src": "4878:60:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9973,
                      "name": "cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9765,
                      "src": "4942:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9974,
                      "name": "_newLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9961,
                      "src": "4956:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4942:24:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9976,
                  "nodeType": "ExpressionStatement",
                  "src": "4942:24:30"
                }
              ]
            },
            "documentation": "@dev sets the ubi calculation cycle length\n@param _newLength the new length in days",
            "id": 9978,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9964,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9963,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "4863:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4863:10:30"
              }
            ],
            "name": "setCycleLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9961,
                  "name": "_newLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9978,
                  "src": "4836:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4836:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4835:20:30"
            },
            "returnParameters": {
              "id": 9965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4874:0:30"
            },
            "scope": 10762,
            "src": "4812:158:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9991,
              "nodeType": "Block",
              "src": "5102:48:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5139:6:30",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9985,
                            "name": "startOfCycle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9769,
                            "src": "5121:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9983,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22173,
                            "src": "5113:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21263,
                          "src": "5113:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 9986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5113:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "5113:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5113:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9982,
                  "id": 9990,
                  "nodeType": "Return",
                  "src": "5106:40:30"
                }
              ]
            },
            "documentation": "@dev returns the day count since start of current cycle",
            "id": 9992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentDayInCycle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5069:2:30"
            },
            "returnParameters": {
              "id": 9982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9981,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9992,
                  "src": "5093:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5093:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5092:9:30"
            },
            "scope": 10762,
            "src": "5043:107:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10114,
              "nodeType": "Block",
              "src": "5415:1041:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10001,
                      "name": "setDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10130,
                      "src": "5419:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5419:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10003,
                  "nodeType": "ExpressionStatement",
                  "src": "5419:8:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10004,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "5494:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10005,
                      "name": "lastWithdrawDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9759,
                      "src": "5508:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5494:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10111,
                  "nodeType": "IfStatement",
                  "src": "5490:943:30",
                  "trueBody": {
                    "id": 10110,
                    "nodeType": "Block",
                    "src": "5525:908:30",
                    "statements": [
                      {
                        "assignments": [
                          10008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10008,
                            "name": "token",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "5530:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10007,
                              "name": "DAOToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 14470,
                              "src": "5530:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10012,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10009,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "5547:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            "id": 10010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nativeToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12441,
                            "src": "5547:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                              "typeString": "function () view external returns (contract DAOToken)"
                            }
                          },
                          "id": 10011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5547:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOToken_$14470",
                            "typeString": "contract DAOToken"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5530:37:30"
                      },
                      {
                        "assignments": [
                          10014
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10014,
                            "name": "currentBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "5572:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10013,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5572:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10021,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10018,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22329,
                                  "src": "5621:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                ],
                                "id": 10017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5613:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5613:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10015,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10008,
                              "src": "5597:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "id": 10016,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "5597:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 10020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5597:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5572:55:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 10022,
                              "name": "currentDayInCycle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9992,
                              "src": "5642:17:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 10023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5642:19:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10024,
                            "name": "currentCycleLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9771,
                            "src": "5665:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5642:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10068,
                        "nodeType": "IfStatement",
                        "src": "5633:475:30",
                        "trueBody": {
                          "id": 10067,
                          "nodeType": "Block",
                          "src": "5723:385:30",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 10026,
                                "name": "shouldWithdrawFromDAO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9763,
                                "src": "5733:21:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10030,
                              "nodeType": "IfStatement",
                              "src": "5729:45:30",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 10027,
                                    "name": "_withdrawFromDao",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9959,
                                    "src": "5756:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                      "typeString": "function ()"
                                    }
                                  },
                                  "id": 10028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5756:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 10029,
                                "nodeType": "ExpressionStatement",
                                "src": "5756:18:30"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10031,
                                  "name": "currentBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10014,
                                  "src": "5780:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10035,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22329,
                                          "src": "5821:4:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                            "typeString": "contract UBIScheme"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                            "typeString": "contract UBIScheme"
                                          }
                                        ],
                                        "id": 10034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5813:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 10036,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5813:13:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10032,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10008,
                                      "src": "5797:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                                        "typeString": "contract DAOToken"
                                      }
                                    },
                                    "id": 10033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21458,
                                    "src": "5797:15:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 10037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5797:30:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5780:47:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10039,
                              "nodeType": "ExpressionStatement",
                              "src": "5780:47:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10040,
                                  "name": "dailyCyclePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9767,
                                  "src": "5833:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 10043,
                                      "name": "cycleLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9765,
                                      "src": "5869:11:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10041,
                                      "name": "currentBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10014,
                                      "src": "5850:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21239,
                                    "src": "5850:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 10044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5850:31:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5833:48:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10046,
                              "nodeType": "ExpressionStatement",
                              "src": "5833:48:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10047,
                                  "name": "currentCycleLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9771,
                                  "src": "5887:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 10048,
                                  "name": "cycleLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9765,
                                  "src": "5908:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5887:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10050,
                              "nodeType": "ExpressionStatement",
                              "src": "5887:32:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10051,
                                  "name": "startOfCycle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9769,
                                  "src": "5925:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 10054,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5948:7:30",
                                        "subdenomination": "hours",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3600_by_1",
                                          "typeString": "int_const 3600"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_3600_by_1",
                                          "typeString": "int_const 3600"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10052,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "5940:3:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 10053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21239,
                                      "src": "5940:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10055,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5940:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5959:7:30",
                                    "subdenomination": "hours",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3600_by_1",
                                      "typeString": "int_const 3600"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5940:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5925:41:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10059,
                              "nodeType": "ExpressionStatement",
                              "src": "5925:41:30"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10061,
                                    "name": "currentDay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1463,
                                    "src": "6026:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10062,
                                    "name": "currentBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10014,
                                    "src": "6043:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10063,
                                    "name": "cycleLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9765,
                                    "src": "6064:11:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10064,
                                    "name": "dailyCyclePool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9767,
                                    "src": "6082:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10060,
                                  "name": "UBICycleCalculated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9830,
                                  "src": "6001:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 10065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6001:101:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10066,
                              "nodeType": "EmitStatement",
                              "src": "5996:106:30"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10069,
                            "name": "lastWithdrawDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9759,
                            "src": "6113:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10070,
                            "name": "currentDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "6131:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6113:28:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10072,
                        "nodeType": "ExpressionStatement",
                        "src": "6113:28:30"
                      },
                      {
                        "assignments": [
                          10074
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10074,
                            "name": "funds",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "6146:19:30",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                              "typeString": "struct UBIScheme.Funds"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10073,
                              "name": "Funds",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9778,
                              "src": "6146:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10078,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10075,
                            "name": "dailyUBIHistory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9782,
                            "src": "6168:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
                              "typeString": "mapping(uint256 => struct UBIScheme.Funds storage ref)"
                            }
                          },
                          "id": 10077,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10076,
                            "name": "currentDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "6184:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6168:27:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Funds_$9778_storage",
                            "typeString": "struct UBIScheme.Funds storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6146:49:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10079,
                              "name": "funds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10074,
                              "src": "6200:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds storage pointer"
                              }
                            },
                            "id": 10081,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasWithdrawn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9775,
                            "src": "6200:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10082,
                            "name": "shouldWithdrawFromDAO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9763,
                            "src": "6221:21:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6200:42:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10084,
                        "nodeType": "ExpressionStatement",
                        "src": "6200:42:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10085,
                              "name": "funds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10074,
                              "src": "6247:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds storage pointer"
                              }
                            },
                            "id": 10087,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "openAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9777,
                            "src": "6247:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10088,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10014,
                            "src": "6266:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6247:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10090,
                        "nodeType": "ExpressionStatement",
                        "src": "6247:33:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10091,
                            "name": "activeUsersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9757,
                            "src": "6289:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6308:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6289:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10102,
                        "nodeType": "IfStatement",
                        "src": "6285:85:30",
                        "trueBody": {
                          "id": 10101,
                          "nodeType": "Block",
                          "src": "6311:59:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10094,
                                  "name": "dailyUbi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9752,
                                  "src": "6317:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 10097,
                                      "name": "activeUsersCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9757,
                                      "src": "6347:16:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10095,
                                      "name": "dailyCyclePool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9767,
                                      "src": "6328:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21239,
                                    "src": "6328:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 10098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6328:36:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6317:47:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10100,
                              "nodeType": "ExpressionStatement",
                              "src": "6317:47:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10104,
                              "name": "currentDay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1463,
                              "src": "6393:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10105,
                              "name": "dailyUbi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9752,
                              "src": "6405:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10106,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22161,
                                "src": "6415:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 10107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6415:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10103,
                            "name": "UBICalculated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9820,
                            "src": "6379:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 10108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6379:49:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10109,
                        "nodeType": "EmitStatement",
                        "src": "6374:54:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10112,
                    "name": "dailyUbi",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9752,
                    "src": "6444:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10000,
                  "id": 10113,
                  "nodeType": "Return",
                  "src": "6437:15:30"
                }
              ]
            },
            "documentation": "@dev The claim calculation formula. Divided the daily balance with\nthe sum of the active users.\n@return The amount of GoodDollar the user can claim",
            "id": 10115,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "distributionFormula",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9994,
                  "name": "reserve",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5352:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9993,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5352:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9996,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5369:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9995,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5369:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5351:31:30"
            },
            "returnParameters": {
              "id": 10000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9999,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5405:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9998,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5405:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5404:9:30"
            },
            "scope": 10762,
            "src": "5323:1133:30",
            "stateMutability": "nonpayable",
            "superFunction": 1517,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10129,
              "nodeType": "Block",
              "src": "6578:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10118,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "6582:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6622:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10121,
                                  "name": "periodStart",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 855,
                                  "src": "6604:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10119,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "6596:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "6596:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6596:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10123,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6595:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "6595:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6595:34:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6582:47:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10128,
                  "nodeType": "ExpressionStatement",
                  "src": "6582:47:30"
                }
              ]
            },
            "documentation": "dev Sets the currentDay variable to amount of days\nsince start of contract.",
            "id": 10130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDay",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6568:2:30"
            },
            "returnParameters": {
              "id": 10117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6578:0:30"
            },
            "scope": 10762,
            "src": "6553:80:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10144,
              "nodeType": "Block",
              "src": "6854:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10137,
                          "name": "claimDay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "6865:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Day_$1453_storage_$",
                            "typeString": "mapping(uint256 => struct AbstractUBI.Day storage ref)"
                          }
                        },
                        "id": 10139,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10138,
                          "name": "currentDay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1463,
                          "src": "6874:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6865:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage",
                          "typeString": "struct AbstractUBI.Day storage ref"
                        }
                      },
                      "id": 10140,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hasClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "6865:31:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 10142,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10141,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10132,
                      "src": "6897:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6865:40:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10136,
                  "id": 10143,
                  "nodeType": "Return",
                  "src": "6858:47:30"
                }
              ]
            },
            "documentation": "@dev Checks if the given account has claimed today\n@param account to check\n@return True if the given user has already claimed today",
            "id": 10145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasClaimed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10132,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10145,
                  "src": "6810:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6810:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6809:17:30"
            },
            "returnParameters": {
              "id": 10136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10135,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10145,
                  "src": "6848:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10134,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6848:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6847:6:30"
            },
            "scope": 10762,
            "src": "6790:119:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10167,
              "nodeType": "Block",
              "src": "7152:147:30",
              "statements": [
                {
                  "assignments": [
                    10153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10153,
                      "name": "lastClaimed",
                      "nodeType": "VariableDeclaration",
                      "scope": 10167,
                      "src": "7156:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7156:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10157,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10154,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1461,
                      "src": "7178:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 10156,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10155,
                      "name": "_account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10147,
                      "src": "7190:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7178:21:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7156:43:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10158,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10153,
                      "src": "7207:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7221:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7207:15:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10164,
                  "nodeType": "IfStatement",
                  "src": "7203:77:30",
                  "trueBody": {
                    "id": 10163,
                    "nodeType": "Block",
                    "src": "7224:56:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7271:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10151,
                        "id": 10162,
                        "nodeType": "Return",
                        "src": "7264:11:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7290:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10151,
                  "id": 10166,
                  "nodeType": "Return",
                  "src": "7283:12:30"
                }
              ]
            },
            "documentation": "@dev Checks if the given account has been owned by a registered user.\n@param _account to check\n@return True for an existing user. False for a new user",
            "id": 10168,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isNotNewUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10147,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10168,
                  "src": "7107:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10146,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7107:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7106:18:30"
            },
            "returnParameters": {
              "id": 10151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10150,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10168,
                  "src": "7146:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10149,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7146:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7145:6:30"
            },
            "scope": 10762,
            "src": "7085:214:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10205,
              "nodeType": "Block",
              "src": "7780:257:30",
              "statements": [
                {
                  "assignments": [
                    10176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10176,
                      "name": "lastClaimed",
                      "nodeType": "VariableDeclaration",
                      "scope": 10205,
                      "src": "7784:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10175,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7784:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10180,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10177,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1461,
                      "src": "7806:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 10179,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10178,
                      "name": "_account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10170,
                      "src": "7818:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7806:21:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7784:43:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10182,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10170,
                        "src": "7848:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10181,
                      "name": "isNotNewUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10168,
                      "src": "7835:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 10183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7835:22:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10202,
                  "nodeType": "IfStatement",
                  "src": "7831:187:30",
                  "trueBody": {
                    "id": 10201,
                    "nodeType": "Block",
                    "src": "7859:159:30",
                    "statements": [
                      {
                        "assignments": [
                          10185
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10185,
                            "name": "daysSinceLastClaim",
                            "nodeType": "VariableDeclaration",
                            "scope": 10201,
                            "src": "7864:26:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10184,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7864:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10193,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7918:6:30",
                              "subdenomination": "days",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10188,
                                  "name": "lastClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10176,
                                  "src": "7901:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10186,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "7893:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "7893:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7893:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21239,
                            "src": "7893:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7893:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7864:61:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10194,
                            "name": "daysSinceLastClaim",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10185,
                            "src": "7934:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10195,
                            "name": "maxInactiveDays",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9761,
                            "src": "7955:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7934:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10200,
                        "nodeType": "IfStatement",
                        "src": "7930:84:30",
                        "trueBody": {
                          "id": 10199,
                          "nodeType": "Block",
                          "src": "7972:42:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 10197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8004:4:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 10174,
                              "id": 10198,
                              "nodeType": "Return",
                              "src": "7997:11:30"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8028:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10174,
                  "id": 10204,
                  "nodeType": "Return",
                  "src": "8021:12:30"
                }
              ]
            },
            "documentation": "@dev Checks weather the given address is owned by an active user.\nA registered user is a user that claimed at least one time. An\nactive user is a user that claimed at least one time but claimed\nat least one time in the last `maxInactiveDays` days. A user that\nhas not claimed for `maxInactiveDays` is an inactive user.\n@param _account to check\n@return True for active user",
            "id": 10206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isActiveUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10170,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10206,
                  "src": "7735:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10169,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7735:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7734:18:30"
            },
            "returnParameters": {
              "id": 10174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10206,
                  "src": "7774:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7774:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7773:6:30"
            },
            "scope": 10762,
            "src": "7713:324:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10317,
              "nodeType": "Block",
              "src": "8531:719:30",
              "statements": [
                {
                  "assignments": [
                    10218
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10218,
                      "name": "day",
                      "nodeType": "VariableDeclaration",
                      "scope": 10317,
                      "src": "8558:15:30",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                        "typeString": "struct AbstractUBI.Day"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10217,
                        "name": "Day",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1453,
                        "src": "8558:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                          "typeString": "struct AbstractUBI.Day"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10222,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10219,
                      "name": "claimDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1457,
                      "src": "8576:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Day_$1453_storage_$",
                        "typeString": "mapping(uint256 => struct AbstractUBI.Day storage ref)"
                      }
                    },
                    "id": 10221,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10220,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "8585:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8576:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Day_$1453_storage",
                      "typeString": "struct AbstractUBI.Day storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8558:38:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10223,
                        "name": "day",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10218,
                        "src": "8600:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                          "typeString": "struct AbstractUBI.Day storage pointer"
                        }
                      },
                      "id": 10225,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amountOfClaimers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1450,
                      "src": "8600:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8648:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10226,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10218,
                            "src": "8623:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                              "typeString": "struct AbstractUBI.Day storage pointer"
                            }
                          },
                          "id": 10227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amountOfClaimers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1450,
                          "src": "8623:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "8623:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8623:27:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8600:50:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10232,
                  "nodeType": "ExpressionStatement",
                  "src": "8600:50:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10233,
                          "name": "day",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10218,
                          "src": "8654:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                            "typeString": "struct AbstractUBI.Day storage pointer"
                          }
                        },
                        "id": 10236,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "8654:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10237,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10235,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10208,
                        "src": "8669:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8654:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 10238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8681:4:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8654:31:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10240,
                  "nodeType": "ExpressionStatement",
                  "src": "8654:31:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10241,
                        "name": "lastClaimed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1461,
                        "src": "8689:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 10243,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10242,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10208,
                        "src": "8701:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8689:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10244,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "8713:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8689:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10246,
                  "nodeType": "ExpressionStatement",
                  "src": "8689:27:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8753:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10247,
                          "name": "totalClaimsPerUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9790,
                          "src": "8720:18:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 10249,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10248,
                          "name": "_account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10208,
                          "src": "8739:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8720:28:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "8720:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 10252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8720:35:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10253,
                  "nodeType": "ExpressionStatement",
                  "src": "8720:35:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10254,
                    "name": "_isFirstTime",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10214,
                    "src": "8804:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10315,
                    "nodeType": "Block",
                    "src": "8988:259:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10278,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10218,
                              "src": "8993:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                "typeString": "struct AbstractUBI.Day storage pointer"
                              }
                            },
                            "id": 10280,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1452,
                            "src": "8993:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10284,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10210,
                                "src": "9031:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10281,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10218,
                                  "src": "9011:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                    "typeString": "struct AbstractUBI.Day storage pointer"
                                  }
                                },
                                "id": 10282,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "claimAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1452,
                                "src": "9011:15:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "9011:19:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9011:28:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8993:46:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10287,
                        "nodeType": "ExpressionStatement",
                        "src": "8993:46:30"
                      },
                      {
                        "assignments": [
                          10289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10289,
                            "name": "token",
                            "nodeType": "VariableDeclaration",
                            "scope": 10315,
                            "src": "9044:16:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GoodDollar_$3767",
                              "typeString": "contract GoodDollar"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10288,
                              "name": "GoodDollar",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3767,
                              "src": "9044:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10297,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10292,
                                      "name": "avatar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9082:6:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12705",
                                        "typeString": "contract Avatar"
                                      }
                                    },
                                    "id": 10293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nativeToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12441,
                                    "src": "9082:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                                      "typeString": "function () view external returns (contract DAOToken)"
                                    }
                                  },
                                  "id": 10294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9082:20:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                ],
                                "id": 10291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9074:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9074:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10290,
                            "name": "GoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3767,
                            "src": "9063:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_GoodDollar_$3767_$",
                              "typeString": "type(contract GoodDollar)"
                            }
                          },
                          "id": 10296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9063:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$3767",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9044:60:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10301,
                                  "name": "_account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10208,
                                  "src": "9132:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 10302,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10210,
                                  "src": "9142:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10299,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10289,
                                  "src": "9117:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                    "typeString": "contract GoodDollar"
                                  }
                                },
                                "id": 10300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3453,
                                "src": "9117:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 10303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9117:33:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636c61696d207472616e73666572206661696c6564",
                              "id": 10304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9152:23:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c4cf8060bec7e67734d714ae3d9a6feb22c3bb4052d0a3cf4ec9c2e259dd279",
                                "typeString": "literal_string \"claim transfer failed\""
                              },
                              "value": "claim transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c4cf8060bec7e67734d714ae3d9a6feb22c3bb4052d0a3cf4ec9c2e259dd279",
                                "typeString": "literal_string \"claim transfer failed\""
                              }
                            ],
                            "id": 10298,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22175,
                            "src": "9109:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9109:67:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10306,
                        "nodeType": "ExpressionStatement",
                        "src": "9109:67:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 10307,
                          "name": "_isClaimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10212,
                          "src": "9185:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10314,
                        "nodeType": "IfStatement",
                        "src": "9181:62:30",
                        "trueBody": {
                          "id": 10313,
                          "nodeType": "Block",
                          "src": "9197:46:30",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10309,
                                    "name": "_account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10208,
                                    "src": "9219:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10310,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10210,
                                    "src": "9229:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10308,
                                  "name": "UBIClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1475,
                                  "src": "9208:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 10311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9208:29:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10312,
                              "nodeType": "EmitStatement",
                              "src": "9203:34:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 10316,
                  "nodeType": "IfStatement",
                  "src": "8800:447:30",
                  "trueBody": {
                    "id": 10277,
                    "nodeType": "Block",
                    "src": "8818:164:30",
                    "statements": [
                      {
                        "assignments": [
                          10256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10256,
                            "name": "awardAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 10277,
                            "src": "8823:19:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10255,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8823:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10261,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10259,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10208,
                              "src": "8870:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10257,
                              "name": "firstClaimPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9773,
                              "src": "8845:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                "typeString": "contract FirstClaimPool"
                              }
                            },
                            "id": 10258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "awardUser",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6912,
                            "src": "8845:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 10260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8845:34:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8823:56:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10262,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10218,
                              "src": "8884:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                "typeString": "struct AbstractUBI.Day storage pointer"
                              }
                            },
                            "id": 10264,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1452,
                            "src": "8884:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10268,
                                "name": "awardAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10256,
                                "src": "8922:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10265,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10218,
                                  "src": "8902:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                    "typeString": "struct AbstractUBI.Day storage pointer"
                                  }
                                },
                                "id": 10266,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "claimAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1452,
                                "src": "8902:15:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "8902:19:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10269,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8902:32:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8884:50:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10271,
                        "nodeType": "ExpressionStatement",
                        "src": "8884:50:30"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10273,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10208,
                              "src": "8955:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10274,
                              "name": "awardAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10256,
                              "src": "8965:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10272,
                            "name": "UBIClaimed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1475,
                            "src": "8944:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8944:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10276,
                        "nodeType": "EmitStatement",
                        "src": "8939:38:30"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Transfers `amount` DAO tokens to `account`. Updates stats\nand emits an event in case of claimed.\nIn case that `isFirstTime` is true, it awards the user.\n@param _account the account which recieves the funds\n@param _amount the amount to transfer\n@param _isClaimed true for claimed\n@param _isFirstTime true for new user or fished user",
            "id": 10318,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transferTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10208,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8443:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10207,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8443:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10210,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8463:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10209,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8463:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10212,
                  "name": "_isClaimed",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8482:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8482:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10214,
                  "name": "_isFirstTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8501:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10213,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8501:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8439:82:30"
            },
            "returnParameters": {
              "id": 10216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8531:0:30"
            },
            "scope": 10762,
            "src": "8415:835:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10381,
              "nodeType": "Block",
              "src": "9667:577:30",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "9739:25:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10326,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "9753:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9753:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 10325,
                          "name": "isNotNewUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10168,
                          "src": "9740:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9740:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10330,
                        "name": "fishedUsersAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9786,
                        "src": "9768:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10333,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10331,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "9789:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9789:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9768:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9739:61:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10340,
                  "nodeType": "IfStatement",
                  "src": "9735:112:30",
                  "trueBody": {
                    "id": 10339,
                    "nodeType": "Block",
                    "src": "9802:45:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10335,
                              "name": "firstClaimPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9773,
                              "src": "9814:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                "typeString": "contract FirstClaimPool"
                              }
                            },
                            "id": 10336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6777,
                            "src": "9814:26:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 10337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9814:28:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10324,
                        "id": 10338,
                        "nodeType": "Return",
                        "src": "9807:35:30"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10341,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "9949:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9990:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10344,
                                  "name": "periodStart",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 855,
                                  "src": "9972:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10342,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "9964:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "9964:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9964:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10346,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9963:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "9963:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9963:34:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9949:48:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10360,
                  "nodeType": "IfStatement",
                  "src": "9945:108:30",
                  "trueBody": {
                    "id": 10359,
                    "nodeType": "Block",
                    "src": "9999:54:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10352,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22171,
                                  "src": "10022:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10022:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 10351,
                              "name": "hasClaimed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10145,
                              "src": "10011:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 10354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10011:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 10356,
                            "name": "dailyUbi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9752,
                            "src": "10040:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "10011:37:30",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10036:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10324,
                        "id": 10358,
                        "nodeType": "Return",
                        "src": "10004:44:30"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    10362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10362,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 10381,
                      "src": "10097:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                        "typeString": "contract DAOToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10361,
                        "name": "DAOToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14470,
                        "src": "10097:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10366,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10363,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "10114:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 10364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nativeToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12441,
                      "src": "10114:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                        "typeString": "function () view external returns (contract DAOToken)"
                      }
                    },
                    "id": 10365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10114:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOToken_$14470",
                      "typeString": "contract DAOToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10097:37:30"
                },
                {
                  "assignments": [
                    10368
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10368,
                      "name": "currentBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 10381,
                      "src": "10138:22:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10367,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10138:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10375,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10372,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22329,
                            "src": "10187:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          ],
                          "id": 10371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10179:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10179:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10369,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10362,
                        "src": "10163:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 10370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "10163:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 10374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10163:30:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10138:55:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10378,
                        "name": "activeUsersCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9757,
                        "src": "10223:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10376,
                        "name": "currentBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10368,
                        "src": "10204:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "10204:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 10379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10204:36:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10324,
                  "id": 10380,
                  "nodeType": "Return",
                  "src": "10197:43:30"
                }
              ]
            },
            "documentation": "@dev Checks the amount which the sender address is eligible to claim for,\nregardless if they have been whitelisted or not. In case the user is\nactive, then the current day must be equal to the actual day, i.e. claim\nor fish has already been executed today.\n@return The amount of GD tokens the address can claim.",
            "id": 10382,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10320,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "9635:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9635:13:30"
              }
            ],
            "name": "checkEntitlement",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10319,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9620:2:30"
            },
            "returnParameters": {
              "id": 10324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10323,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10382,
                  "src": "9658:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10322,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9658:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9657:9:30"
            },
            "scope": 10762,
            "src": "9595:649:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10458,
              "nodeType": "Block",
              "src": "10642:960:30",
              "statements": [
                {
                  "assignments": [
                    10390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10390,
                      "name": "newDistribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 10458,
                      "src": "10964:23:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10389,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10964:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11010:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 10393,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10384,
                        "src": "11013:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10391,
                      "name": "distributionFormula",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10115
                      ],
                      "referencedDeclaration": 10115,
                      "src": "10990:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) returns (uint256)"
                      }
                    },
                    "id": 10394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10990:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10964:58:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 10403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10397,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11127:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10396,
                          "name": "isNotNewUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10168,
                          "src": "11114:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11114:22:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 10402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "11143:31:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10399,
                            "name": "fishedUsersAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9786,
                            "src": "11144:20:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 10401,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10400,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11165:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11144:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "11114:60:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "11181:21:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10405,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11193:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10404,
                          "name": "hasClaimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10145,
                          "src": "11182:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11182:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11114:88:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 10426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 10422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "11298:23:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10420,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10384,
                              "src": "11312:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10419,
                            "name": "isNotNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10168,
                            "src": "11299:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11299:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10423,
                          "name": "fishedUsersAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9786,
                          "src": "11325:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 10425,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10424,
                          "name": "_account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10384,
                          "src": "11346:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11325:30:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "11298:57:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 10454,
                    "nodeType": "IfStatement",
                    "src": "11294:289:30",
                    "trueBody": {
                      "id": 10453,
                      "nodeType": "Block",
                      "src": "11357:226:30",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 10427,
                              "name": "activeUsersCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9757,
                              "src": "11398:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 10430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11438:1:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10428,
                                  "name": "activeUsersCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9757,
                                  "src": "11417:16:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "11417:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11417:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11398:42:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10433,
                          "nodeType": "ExpressionStatement",
                          "src": "11398:42:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10434,
                                "name": "fishedUsersAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9786,
                                "src": "11445:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 10436,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10435,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11466:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "11445:30:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 10437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11478:5:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "src": "11445:38:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 10439,
                          "nodeType": "ExpressionStatement",
                          "src": "11445:38:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10441,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11504:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11514:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 10443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11517:5:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 10444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11524:4:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 10440,
                              "name": "_transferTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10318,
                              "src": "11488:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                "typeString": "function (address,uint256,bool,bool)"
                              }
                            },
                            "id": 10445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11488:41:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 10446,
                          "nodeType": "ExpressionStatement",
                          "src": "11488:41:30"
                        },
                        {
                          "eventCall": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10448,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11553:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10447,
                              "name": "ActivatedUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9800,
                              "src": "11539:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                "typeString": "function (address)"
                              }
                            },
                            "id": 10449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11539:23:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 10450,
                          "nodeType": "EmitStatement",
                          "src": "11534:28:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 10451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11574:4:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "functionReturnParameters": 10388,
                          "id": 10452,
                          "nodeType": "Return",
                          "src": "11567:11:30"
                        }
                      ]
                    }
                  },
                  "id": 10455,
                  "nodeType": "IfStatement",
                  "src": "11106:477:30",
                  "trueBody": {
                    "id": 10418,
                    "nodeType": "Block",
                    "src": "11207:81:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10410,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10384,
                              "src": "11228:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10411,
                              "name": "newDistribution",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10390,
                              "src": "11238:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 10412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11255:4:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 10413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11261:5:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10409,
                            "name": "_transferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10318,
                            "src": "11212:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool,bool)"
                            }
                          },
                          "id": 10414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11212:55:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10415,
                        "nodeType": "ExpressionStatement",
                        "src": "11212:55:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11279:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10388,
                        "id": 10417,
                        "nodeType": "Return",
                        "src": "11272:11:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11593:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10388,
                  "id": 10457,
                  "nodeType": "Return",
                  "src": "11586:12:30"
                }
              ]
            },
            "documentation": "@dev Function for claiming UBI. Requires contract to be active. Calls distributionFormula,\ncalculats the amount the account can claims, and transfers the amount to the account.\nEmits the address of account and amount claimed.\n@param _account The claimer account\n@return A bool indicating if UBI was claimed",
            "id": 10459,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_claim",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10384,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10459,
                  "src": "10600:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10383,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10600:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10599:18:30"
            },
            "returnParameters": {
              "id": 10388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10387,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10459,
                  "src": "10636:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10386,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10636:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10635:6:30"
            },
            "scope": 10762,
            "src": "10584:1018:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10475,
              "nodeType": "Block",
              "src": "12023:33:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10471,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "12041:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12041:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 10470,
                      "name": "_claim",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10459,
                      "src": "12034:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) returns (bool)"
                      }
                    },
                    "id": 10473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12034:18:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10469,
                  "id": 10474,
                  "nodeType": "Return",
                  "src": "12027:25:30"
                }
              ]
            },
            "documentation": "@dev Function for claiming UBI. Requires contract to be active and claimer to be whitelisted.\nCalls distributionFormula, calculats the amount the caller can claim, and transfers the amount\nto the caller. Emits the address of caller and amount claimed.\n@return A bool indicating if UBI was claimed",
            "id": 10476,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10462,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10461,
                  "name": "requireStarted",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9841,
                  "src": "11956:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11956:14:30"
              },
              {
                "arguments": null,
                "id": 10464,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10463,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "11973:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11973:13:30"
              },
              {
                "arguments": null,
                "id": 10466,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10465,
                  "name": "onlyWhitelisted",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2576,
                  "src": "11989:15:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11989:15:30"
              }
            ],
            "name": "claim",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10460,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11942:2:30"
            },
            "returnParameters": {
              "id": 10469,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10468,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10476,
                  "src": "12016:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10467,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12016:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12015:6:30"
            },
            "scope": 10762,
            "src": "11928:128:30",
            "stateMutability": "nonpayable",
            "superFunction": 1784,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10542,
              "nodeType": "Block",
              "src": "12691:805:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10487,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10478,
                              "src": "12857:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10486,
                            "name": "isNotNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10168,
                            "src": "12844:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12844:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 10492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "12870:23:30",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10490,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10478,
                                "src": "12884:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10489,
                              "name": "isActiveUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10206,
                              "src": "12871:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 10491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12871:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12844:49:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6973206e6f7420616e20696e6163746976652075736572",
                        "id": 10494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12898:25:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b91fa7e2292614c5e86a5c0d3c57699b28d2e99c278a31a45ed92dc5e3af522a",
                          "typeString": "literal_string \"is not an inactive user\""
                        },
                        "value": "is not an inactive user"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b91fa7e2292614c5e86a5c0d3c57699b28d2e99c278a31a45ed92dc5e3af522a",
                          "typeString": "literal_string \"is not an inactive user\""
                        }
                      ],
                      "id": 10485,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12832:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12832:95:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10496,
                  "nodeType": "ExpressionStatement",
                  "src": "12832:95:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "12939:31:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10498,
                            "name": "fishedUsersAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9786,
                            "src": "12940:20:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 10500,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10499,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10478,
                            "src": "12961:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12940:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c726561647920666973686564",
                        "id": 10502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12972:16:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a89e08cef1dba2af812cfa484eae803d141a89a96f1f1ced52b688e0318ec0ff",
                          "typeString": "literal_string \"already fished\""
                        },
                        "value": "already fished"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a89e08cef1dba2af812cfa484eae803d141a89a96f1f1ced52b688e0318ec0ff",
                          "typeString": "literal_string \"already fished\""
                        }
                      ],
                      "id": 10497,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12931:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12931:58:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10504,
                  "nodeType": "ExpressionStatement",
                  "src": "12931:58:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10505,
                        "name": "fishedUsersAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9786,
                        "src": "12993:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10507,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10506,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13014:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12993:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 10508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13026:4:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12993:37:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10510,
                  "nodeType": "ExpressionStatement",
                  "src": "12993:37:30"
                },
                {
                  "assignments": [
                    10512
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10512,
                      "name": "newDistribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 10542,
                      "src": "13245:23:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13245:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10517,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13291:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 10515,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13294:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10513,
                      "name": "distributionFormula",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10115
                      ],
                      "referencedDeclaration": 10115,
                      "src": "13271:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) returns (uint256)"
                      }
                    },
                    "id": 10516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13271:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13245:58:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10518,
                      "name": "activeUsersCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9757,
                      "src": "13307:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13347:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10519,
                          "name": "activeUsersCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9757,
                          "src": "13326:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "13326:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13326:23:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13307:42:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10524,
                  "nodeType": "ExpressionStatement",
                  "src": "13307:42:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10526,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "13369:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13369:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10528,
                        "name": "newDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10512,
                        "src": "13381:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13398:5:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13405:5:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10525,
                      "name": "_transferTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10318,
                      "src": "13353:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,bool,bool)"
                      }
                    },
                    "id": 10531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13353:58:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10532,
                  "nodeType": "ExpressionStatement",
                  "src": "13353:58:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10534,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "13439:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13439:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10536,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13451:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10537,
                        "name": "newDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10512,
                        "src": "13461:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10533,
                      "name": "InactiveUserFished",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9808,
                      "src": "13420:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 10538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13420:57:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10539,
                  "nodeType": "EmitStatement",
                  "src": "13415:62:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 10540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13488:4:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 10484,
                  "id": 10541,
                  "nodeType": "Return",
                  "src": "13481:11:30"
                }
              ]
            },
            "documentation": "@dev In order to update users from active to inactive, we give out incentive to people\nto update the status of inactive users, this action is called \"Fishing\". Anyone can\nsend a tx to the contract to mark inactive users. The \"fisherman\" receives a reward\nequal to the daily UBI (ie instead of the “fished” user). User that “last claimed” > 14\ncan be \"fished\" and made inactive (reduces active users count by one). Requires\ncontract to be active.\n@param _account to fish\n@return A bool indicating if UBI was fished",
            "id": 10543,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10481,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10480,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "12662:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12662:13:30"
              }
            ],
            "name": "fish",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10478,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10543,
                  "src": "12637:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12637:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12636:18:30"
            },
            "returnParameters": {
              "id": 10484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10483,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10543,
                  "src": "12685:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10482,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12685:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12684:6:30"
            },
            "scope": 10762,
            "src": "12623:873:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10616,
              "nodeType": "Block",
              "src": "13828:389:30",
              "statements": [
                {
                  "body": {
                    "id": 10606,
                    "nodeType": "Block",
                    "src": "13879:270:30",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 10564,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22164,
                              "src": "13888:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 10565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13888:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10566,
                            "name": "iterationGasLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9755,
                            "src": "13900:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13888:29:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10575,
                        "nodeType": "IfStatement",
                        "src": "13884:80:30",
                        "trueBody": {
                          "id": 10574,
                          "nodeType": "Block",
                          "src": "13919:45:30",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10569,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10554,
                                    "src": "13942:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10568,
                                  "name": "TotalFished",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9812,
                                  "src": "13930:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 10570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13930:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10571,
                              "nodeType": "EmitStatement",
                              "src": "13925:19:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10572,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10554,
                                "src": "13957:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 10552,
                              "id": 10573,
                              "nodeType": "Return",
                              "src": "13950:8:30"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 10587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10577,
                                    "name": "_accounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10546,
                                    "src": "13990:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 10579,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10578,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10554,
                                    "src": "14000:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13990:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10576,
                                "name": "isNotNewUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "13977:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13977:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "14011:27:30",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10582,
                                      "name": "_accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10546,
                                      "src": "14025:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10584,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10583,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10554,
                                      "src": "14035:1:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14025:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10581,
                                  "name": "isActiveUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10206,
                                  "src": "14012:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 10585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14012:26:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13977:61:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "14046:35:30",
                            "subExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10588,
                                "name": "fishedUsersAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9786,
                                "src": "14047:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 10592,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10589,
                                  "name": "_accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10546,
                                  "src": "14068:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 10591,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10590,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10554,
                                  "src": "14078:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14068:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14047:34:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13977:104:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10605,
                        "nodeType": "IfStatement",
                        "src": "13968:177:30",
                        "trueBody": {
                          "id": 10604,
                          "nodeType": "Block",
                          "src": "14087:58:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 10597,
                                          "name": "_accounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10546,
                                          "src": "14106:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 10599,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 10598,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10554,
                                          "src": "14116:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14106:12:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10596,
                                      "name": "fish",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10543,
                                      "src": "14101:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                                        "typeString": "function (address) returns (bool)"
                                      }
                                    },
                                    "id": 10600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14101:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6669736820686173206661696c6564",
                                    "id": 10601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14121:17:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6618a3da3c9a049c152b6f5de8825d0e3d7d60e94b72499e691f6ab90c2e73dc",
                                      "typeString": "literal_string \"fish has failed\""
                                    },
                                    "value": "fish has failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6618a3da3c9a049c152b6f5de8825d0e3d7d60e94b72499e691f6ab90c2e73dc",
                                      "typeString": "literal_string \"fish has failed\""
                                    }
                                  ],
                                  "id": 10595,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    22174,
                                    22175
                                  ],
                                  "referencedDeclaration": 22175,
                                  "src": "14093:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14093:46:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10603,
                              "nodeType": "ExpressionStatement",
                              "src": "14093:46:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10557,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10554,
                      "src": "13852:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10558,
                        "name": "_accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10546,
                        "src": "13856:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 10559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13856:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13852:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10607,
                  "initializationExpression": {
                    "assignments": [
                      10554
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10554,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 10607,
                        "src": "13837:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13837:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10556,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13849:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13837:13:30"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "13874:3:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10561,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10554,
                        "src": "13876:1:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10563,
                    "nodeType": "ExpressionStatement",
                    "src": "13874:3:30"
                  },
                  "nodeType": "ForStatement",
                  "src": "13832:317:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10609,
                          "name": "_accounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10546,
                          "src": "14169:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 10610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14169:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10608,
                      "name": "TotalFished",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9812,
                      "src": "14157:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 10611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14157:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10612,
                  "nodeType": "EmitStatement",
                  "src": "14152:34:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 10613,
                      "name": "_accounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10546,
                      "src": "14197:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 10614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "14197:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10552,
                  "id": 10615,
                  "nodeType": "Return",
                  "src": "14190:23:30"
                }
              ]
            },
            "documentation": "@dev executes `fish` with multiple addresses. emits the number of users from the given\narray who actually been tried being fished.\n@param _accounts to fish\n@return A bool indicating if all the UBIs were fished",
            "id": 10617,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10549,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10548,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "13793:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13793:13:30"
              }
            ],
            "name": "fishMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10546,
                  "name": "_accounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 10617,
                  "src": "13754:26:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10544,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13754:7:30",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10545,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13754:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13753:28:30"
            },
            "returnParameters": {
              "id": 10552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10551,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10617,
                  "src": "13818:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13818:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13817:9:30"
            },
            "scope": 10762,
            "src": "13735:482:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10659,
              "nodeType": "Block",
              "src": "14435:276:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10622,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22330,
                        "src": "14439:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_UBIScheme_$10762",
                          "typeString": "contract super UBIScheme"
                        }
                      },
                      "id": 10624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "start",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1643,
                      "src": "14439:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14439:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10626,
                  "nodeType": "ExpressionStatement",
                  "src": "14439:13:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10627,
                      "name": "periodStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 855,
                      "src": "14456:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14478:6:30",
                              "subdenomination": "days",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10628,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22173,
                              "src": "14470:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21239,
                            "src": "14470:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14470:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14488:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        },
                        "src": "14470:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3132",
                        "id": 10634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14497:8:30",
                        "subdenomination": "hours",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_43200_by_1",
                          "typeString": "int_const 43200"
                        },
                        "value": "12"
                      },
                      "src": "14470:35:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14456:49:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10637,
                  "nodeType": "ExpressionStatement",
                  "src": "14456:49:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10638,
                      "name": "startOfCycle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9769,
                      "src": "14538:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10639,
                      "name": "periodStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 855,
                      "src": "14553:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14538:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10641,
                  "nodeType": "ExpressionStatement",
                  "src": "14538:26:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10646,
                            "name": "firstClaimPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9773,
                            "src": "14603:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                              "typeString": "contract FirstClaimPool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                              "typeString": "contract FirstClaimPool"
                            }
                          ],
                          "id": 10645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14595:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14595:23:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "736574554249536368656d65286164647265737329",
                            "id": 10650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14647:23:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c336822eebd4b54d01b83037f700d04a24dc212a45909afaef5386829705ab2",
                              "typeString": "literal_string \"setUBIScheme(address)\""
                            },
                            "value": "setUBIScheme(address)"
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10652,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22329,
                                "src": "14680:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              ],
                              "id": 10651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14672:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14672:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c336822eebd4b54d01b83037f700d04a24dc212a45909afaef5386829705ab2",
                              "typeString": "literal_string \"setUBIScheme(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10648,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "14623:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 10649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14623:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 10654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14623:63:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10655,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "14691:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14702:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10642,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1286,
                        "src": "14568:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 10644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "genericCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14271,
                      "src": "14568:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                      }
                    },
                    "id": 10657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14568:139:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "id": 10658,
                  "nodeType": "ExpressionStatement",
                  "src": "14568:139:30"
                }
              ]
            },
            "documentation": "@dev Start function. Adds this contract to identity as a feeless scheme and\nadds permissions to FirstClaimPool\nCan only be called if scheme is registered",
            "id": 10660,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10620,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10619,
                  "name": "onlyRegistered",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1335,
                  "src": "14420:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14420:14:30"
              }
            ],
            "name": "start",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14410:2:30"
            },
            "returnParameters": {
              "id": 10621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14435:0:30"
            },
            "scope": 10762,
            "src": "14396:315:30",
            "stateMutability": "nonpayable",
            "superFunction": 1643,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10671,
              "nodeType": "Block",
              "src": "14910:47:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10667,
                      "name": "shouldWithdrawFromDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9763,
                      "src": "14914:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10668,
                      "name": "_shouldWithdraw",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10662,
                      "src": "14938:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "14914:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10670,
                  "nodeType": "ExpressionStatement",
                  "src": "14914:39:30"
                }
              ]
            },
            "documentation": "@dev Sets whether to also withdraw GD from avatar for UBI\n@param _shouldWithdraw boolean if to withdraw",
            "id": 10672,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10665,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10664,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "14899:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14899:10:30"
              }
            ],
            "name": "setShouldWithdrawFromDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10662,
                  "name": "_shouldWithdraw",
                  "nodeType": "VariableDeclaration",
                  "scope": 10672,
                  "src": "14870:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10661,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14870:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14869:22:30"
            },
            "returnParameters": {
              "id": 10666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14910:0:30"
            },
            "scope": 10762,
            "src": "14836:121:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10682,
              "nodeType": "Block",
              "src": "14993:19:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10677,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22330,
                        "src": "14997:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_UBIScheme_$10762",
                          "typeString": "contract super UBIScheme"
                        }
                      },
                      "id": 10679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "end",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1688,
                      "src": "14997:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14997:11:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10681,
                  "nodeType": "ExpressionStatement",
                  "src": "14997:11:30"
                }
              ]
            },
            "documentation": null,
            "id": 10683,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10675,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10674,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "14982:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14982:10:30"
              }
            ],
            "name": "end",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14972:2:30"
            },
            "returnParameters": {
              "id": 10676,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14993:0:30"
            },
            "scope": 10762,
            "src": "14960:52:30",
            "stateMutability": "nonpayable",
            "superFunction": 1688,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10760,
              "nodeType": "Block",
              "src": "15077:601:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10690,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10660
                      ],
                      "referencedDeclaration": 10660,
                      "src": "15081:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15081:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10692,
                  "nodeType": "ExpressionStatement",
                  "src": "15081:7:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10693,
                      "name": "prevUBIScheme",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10685,
                      "src": "15097:13:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15122:1:30",
                          "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": 10694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "15114:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 10696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15114:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "15097:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10759,
                  "nodeType": "IfStatement",
                  "src": "15093:582:30",
                  "trueBody": {
                    "id": 10758,
                    "nodeType": "Block",
                    "src": "15126:549:30",
                    "statements": [
                      {
                        "assignments": [
                          10699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10699,
                            "name": "gd",
                            "nodeType": "VariableDeclaration",
                            "scope": 10758,
                            "src": "15131:13:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GoodDollar_$3767",
                              "typeString": "contract GoodDollar"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10698,
                              "name": "GoodDollar",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3767,
                              "src": "15131:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10707,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10702,
                                      "name": "avatar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "15166:6:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12705",
                                        "typeString": "contract Avatar"
                                      }
                                    },
                                    "id": 10703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nativeToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12441,
                                    "src": "15166:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                                      "typeString": "function () view external returns (contract DAOToken)"
                                    }
                                  },
                                  "id": 10704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15166:20:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                ],
                                "id": 10701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15158:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15158:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10700,
                            "name": "GoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3767,
                            "src": "15147:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_GoodDollar_$3767_$",
                              "typeString": "type(contract GoodDollar)"
                            }
                          },
                          "id": 10706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15147:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$3767",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15131:57:30"
                      },
                      {
                        "assignments": [
                          10709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10709,
                            "name": "ubiBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 10758,
                            "src": "15194:18:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10708,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15194:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10714,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10712,
                              "name": "prevUBIScheme",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10685,
                              "src": "15228:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10710,
                              "name": "gd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10699,
                              "src": "15215:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "id": 10711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "15215:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 10713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15215:27:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15194:48:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10718,
                              "name": "prevUBIScheme",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10685,
                              "src": "15318:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "656e642829",
                                  "id": 10721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15361:7:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_efbe1c1ca17841a6aacc78b39fe2541c8bb21e409035e2408b6d17aee00db20f",
                                    "typeString": "literal_string \"end()\""
                                  },
                                  "value": "end()"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_efbe1c1ca17841a6aacc78b39fe2541c8bb21e409035e2408b6d17aee00db20f",
                                    "typeString": "literal_string \"end()\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10719,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22158,
                                  "src": "15337:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15337:23:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 10722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15337:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10723,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "15375:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15387:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10715,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1286,
                              "src": "15290:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 10717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "genericCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14271,
                            "src": "15290:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                            }
                          },
                          "id": 10725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15290:103:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "id": 10726,
                        "nodeType": "ExpressionStatement",
                        "src": "15290:103:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10731,
                                  "name": "firstClaimPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9773,
                                  "src": "15435:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                    "typeString": "contract FirstClaimPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                    "typeString": "contract FirstClaimPool"
                                  }
                                ],
                                "id": 10730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15427:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15427:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "736574436c61696d416d6f756e742875696e7432353629",
                                  "id": 10735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15480:25:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b1c7ef0c0b07e727311a40c4390dd551f9bc2cb7e6725a87f7301ce4c0278f16",
                                    "typeString": "literal_string \"setClaimAmount(uint256)\""
                                  },
                                  "value": "setClaimAmount(uint256)"
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 10736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15507:4:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b1c7ef0c0b07e727311a40c4390dd551f9bc2cb7e6725a87f7301ce4c0278f16",
                                    "typeString": "literal_string \"setClaimAmount(uint256)\""
                                  },
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10733,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22158,
                                  "src": "15456:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15456:23:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 10737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15456:56:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10738,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "15518:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15530:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10727,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1286,
                              "src": "15399:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 10729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "genericCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14271,
                            "src": "15399:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                            }
                          },
                          "id": 10740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15399:137:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "id": 10741,
                        "nodeType": "ExpressionStatement",
                        "src": "15399:137:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10742,
                            "name": "ubiBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10709,
                            "src": "15546:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15559:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15546:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10757,
                        "nodeType": "IfStatement",
                        "src": "15542:129:30",
                        "trueBody": {
                          "id": 10756,
                          "nodeType": "Block",
                          "src": "15562:109:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10748,
                                    "name": "gd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10699,
                                    "src": "15607:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                      "typeString": "contract GoodDollar"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10750,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22329,
                                        "src": "15624:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                          "typeString": "contract UBIScheme"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                          "typeString": "contract UBIScheme"
                                        }
                                      ],
                                      "id": 10749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15616:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 10751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15616:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10752,
                                    "name": "ubiBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10709,
                                    "src": "15636:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10753,
                                    "name": "avatar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1281,
                                    "src": "15653:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Avatar_$12705",
                                      "typeString": "contract Avatar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                      "typeString": "contract GoodDollar"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_Avatar_$12705",
                                      "typeString": "contract Avatar"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10745,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1286,
                                    "src": "15568:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                      "typeString": "contract ControllerInterface"
                                    }
                                  },
                                  "id": 10747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "externalTokenTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14295,
                                  "src": "15568:32:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$22137_$_t_address_$_t_uint256_$_t_contract$_Avatar_$12705_$returns$_t_bool_$",
                                    "typeString": "function (contract IERC20,address,uint256,contract Avatar) external returns (bool)"
                                  }
                                },
                                "id": 10754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15568:97:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10755,
                              "nodeType": "ExpressionStatement",
                              "src": "15568:97:30"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10761,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10688,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10687,
                  "name": "onlyRegistered",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1335,
                  "src": "15062:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15062:14:30"
              }
            ],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10685,
                  "name": "prevUBIScheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 10761,
                  "src": "15032:21:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10684,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15032:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15031:23:30"
            },
            "returnParameters": {
              "id": 10689,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15077:0:30"
            },
            "scope": 10762,
            "src": "15015:663:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10763,
        "src": "237:15443:30"
      }
    ],
    "src": "0:15681:30"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/UBIScheme.sol",
    "exportedSymbols": {
      "UBIScheme": [
        10762
      ]
    },
    "id": 10763,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9742,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:30"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/UBI.sol",
        "file": "../../contracts/dao/schemes/UBI.sol",
        "id": 9743,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 1868,
        "src": "25:45:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/FirstClaimPool.sol",
        "file": "./FirstClaimPool.sol",
        "id": 9744,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 6960,
        "src": "71:30:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 9745,
        "nodeType": "ImportDirective",
        "scope": 10763,
        "sourceUnit": 21309,
        "src": "102:59:30",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9746,
              "name": "AbstractUBI",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1785,
              "src": "259:11:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractUBI_$1785",
                "typeString": "contract AbstractUBI"
              }
            },
            "id": 9747,
            "nodeType": "InheritanceSpecifier",
            "src": "259:11:30"
          }
        ],
        "contractDependencies": [
          1004,
          1227,
          1423,
          1785,
          2667,
          21417
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10762,
        "linearizedBaseContracts": [
          10762,
          1785,
          1227,
          2667,
          1423,
          21417,
          1004
        ],
        "name": "UBIScheme",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9750,
            "libraryName": {
              "contractScope": null,
              "id": 9748,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "280:8:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "274:27:30",
            "typeName": {
              "id": 9749,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "293:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 9752,
            "name": "dailyUbi",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "363:23:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9751,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "363:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9755,
            "name": "iterationGasLimit",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "443:41:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9753,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "443:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "313530303030",
              "id": 9754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "478:6:30",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_150000_by_1",
                "typeString": "int_const 150000"
              },
              "value": "150000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9757,
            "name": "activeUsersCount",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "615:31:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9756,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "615:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9759,
            "name": "lastWithdrawDay",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "786:30:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9758,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "786:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9761,
            "name": "maxInactiveDays",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "924:30:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9760,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "924:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9763,
            "name": "shouldWithdrawFromDAO",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1030:33:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 9762,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1030:4:30",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9765,
            "name": "cycleLength",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1140:26:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9764,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1140:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9767,
            "name": "dailyCyclePool",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1255:29:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9766,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1255:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9769,
            "name": "startOfCycle",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1324:27:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9768,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1324:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9771,
            "name": "currentCycleLength",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1443:33:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9770,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1443:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9773,
            "name": "firstClaimPool",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1655:36:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
              "typeString": "contract FirstClaimPool"
            },
            "typeName": {
              "contractScope": null,
              "id": 9772,
              "name": "FirstClaimPool",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6959,
              "src": "1655:14:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                "typeString": "contract FirstClaimPool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "UBIScheme.Funds",
            "id": 9778,
            "members": [
              {
                "constant": false,
                "id": 9775,
                "name": "hasWithdrawn",
                "nodeType": "VariableDeclaration",
                "scope": 9778,
                "src": "1786:17:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 9774,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1786:4:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9777,
                "name": "openAmount",
                "nodeType": "VariableDeclaration",
                "scope": 9778,
                "src": "1844:18:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 9776,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1844:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Funds",
            "nodeType": "StructDefinition",
            "scope": 10762,
            "src": "1695:171:30",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9782,
            "name": "dailyUBIHistory",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "1959:48:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
              "typeString": "mapping(uint256 => struct UBIScheme.Funds)"
            },
            "typeName": {
              "id": 9781,
              "keyType": {
                "id": 9779,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1967:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1959:25:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
                "typeString": "mapping(uint256 => struct UBIScheme.Funds)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9780,
                "name": "Funds",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9778,
                "src": "1978:5:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                  "typeString": "struct UBIScheme.Funds"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9786,
            "name": "fishedUsersAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "2077:52:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 9785,
              "keyType": {
                "id": 9783,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2085:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2077:24:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 9784,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2096:4:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9790,
            "name": "totalClaimsPerUser",
            "nodeType": "VariableDeclaration",
            "scope": 10762,
            "src": "2164:53:30",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 9789,
              "keyType": {
                "id": 9787,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2172:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2164:27:30",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 9788,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2183:7:30",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9796,
            "name": "WithdrawFromDao",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9792,
                  "indexed": false,
                  "name": "prevBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 9796,
                  "src": "2287:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2287:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9794,
                  "indexed": false,
                  "name": "newBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 9796,
                  "src": "2308:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9793,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2308:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2286:41:30"
            },
            "src": "2265:63:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9800,
            "name": "ActivatedUser",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9798,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 9800,
                  "src": "2386:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2386:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2385:25:30"
            },
            "src": "2366:45:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9808,
            "name": "InactiveUserFished",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9802,
                  "indexed": true,
                  "name": "caller",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2482:22:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2482:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9804,
                  "indexed": true,
                  "name": "fished_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2508:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9806,
                  "indexed": false,
                  "name": "claimAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 9808,
                  "src": "2542:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2542:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2478:86:30"
            },
            "src": "2454:111:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9812,
            "name": "TotalFished",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9810,
                  "indexed": false,
                  "name": "total",
                  "nodeType": "VariableDeclaration",
                  "scope": 9812,
                  "src": "2802:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9809,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2801:15:30"
            },
            "src": "2784:33:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9820,
            "name": "UBICalculated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9814,
                  "indexed": false,
                  "name": "day",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2879:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9813,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2879:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9816,
                  "indexed": false,
                  "name": "dailyUbi",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2892:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9815,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2892:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9818,
                  "indexed": false,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "2910:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2910:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2878:52:30"
            },
            "src": "2859:72:30"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9830,
            "name": "UBICycleCalculated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9822,
                  "indexed": false,
                  "name": "day",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2962:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2962:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9824,
                  "indexed": false,
                  "name": "pool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2977:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2977:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9826,
                  "indexed": false,
                  "name": "cycleLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "2993:19:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9825,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2993:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9828,
                  "indexed": false,
                  "name": "dailyUBIPool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9830,
                  "src": "3016:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9827,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3016:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2958:81:30"
            },
            "src": "2934:106:30"
          },
          {
            "body": {
              "id": 9840,
              "nodeType": "Block",
              "src": "3069:64:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9833,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22173,
                          "src": "3081:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9834,
                          "name": "periodStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 855,
                          "src": "3088:11:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3081:18:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420696e20706572696f6453746172746564",
                        "id": 9836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3101:22:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2e7c4f3ea76983b927b0e2ac51ecaf0769bbdcbe7b5c192a4d192b7d1bd91a0d",
                          "typeString": "literal_string \"not in periodStarted\""
                        },
                        "value": "not in periodStarted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2e7c4f3ea76983b927b0e2ac51ecaf0769bbdcbe7b5c192a4d192b7d1bd91a0d",
                          "typeString": "literal_string \"not in periodStarted\""
                        }
                      ],
                      "id": 9832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "3073:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3073:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9838,
                  "nodeType": "ExpressionStatement",
                  "src": "3073:51:30"
                },
                {
                  "id": 9839,
                  "nodeType": "PlaceholderStatement",
                  "src": "3128:1:30"
                }
              ]
            },
            "documentation": null,
            "id": 9841,
            "name": "requireStarted",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3066:2:30"
            },
            "src": "3043:90:30",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9888,
              "nodeType": "Block",
              "src": "3773:211:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9866,
                          "name": "_maxInactiveDays",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9853,
                          "src": "3785:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3804:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3785:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d617820696e61637469766520646179732063616e6e6f74206265207a65726f",
                        "id": 9869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3807:34:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c8035e82871b9184746d3ffad7395fd870b53108eac29528a2c48cf392e3fe23",
                          "typeString": "literal_string \"Max inactive days cannot be zero\""
                        },
                        "value": "Max inactive days cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c8035e82871b9184746d3ffad7395fd870b53108eac29528a2c48cf392e3fe23",
                          "typeString": "literal_string \"Max inactive days cannot be zero\""
                        }
                      ],
                      "id": 9865,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "3777:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3777:65:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9871,
                  "nodeType": "ExpressionStatement",
                  "src": "3777:65:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9872,
                      "name": "maxInactiveDays",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9761,
                      "src": "3847:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9873,
                      "name": "_maxInactiveDays",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9853,
                      "src": "3865:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3847:34:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9875,
                  "nodeType": "ExpressionStatement",
                  "src": "3847:34:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9876,
                      "name": "firstClaimPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9773,
                      "src": "3885:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                        "typeString": "contract FirstClaimPool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9877,
                      "name": "_firstClaimPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9847,
                      "src": "3902:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                        "typeString": "contract FirstClaimPool"
                      }
                    },
                    "src": "3885:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                      "typeString": "contract FirstClaimPool"
                    }
                  },
                  "id": 9879,
                  "nodeType": "ExpressionStatement",
                  "src": "3885:32:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9880,
                      "name": "shouldWithdrawFromDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9763,
                      "src": "3921:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 9881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3945:5:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3921:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9883,
                  "nodeType": "ExpressionStatement",
                  "src": "3921:29:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9884,
                      "name": "cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9765,
                      "src": "3954:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9885,
                      "name": "_cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9855,
                      "src": "3968:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3954:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9887,
                  "nodeType": "ExpressionStatement",
                  "src": "3954:26:30"
                }
              ]
            },
            "documentation": "@dev Constructor\n@param _avatar The avatar of the DAO\n@param _identity The identity contract\n@param _firstClaimPool A pool for GD to give out to activated users\n@param _periodStart The time from when the contract can start\n@param _periodEnd The time from when the contract can end\n@param _maxInactiveDays Days of grace without claiming request",
            "id": 9889,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9858,
                    "name": "_avatar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9843,
                    "src": "3724:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9859,
                    "name": "_identity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9845,
                    "src": "3733:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3744:1:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  {
                    "argumentTypes": null,
                    "id": 9861,
                    "name": "_periodStart",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9849,
                    "src": "3747:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9862,
                    "name": "_periodEnd",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9851,
                    "src": "3761:10:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 9863,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9857,
                  "name": "AbstractUBI",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1785,
                  "src": "3712:11:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_AbstractUBI_$1785_$",
                    "typeString": "type(contract AbstractUBI)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3712:60:30"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9843,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3533:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12705",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9842,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12705,
                    "src": "3533:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9845,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3551:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$2380",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9844,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2380,
                    "src": "3551:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9847,
                  "name": "_firstClaimPool",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3573:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                    "typeString": "contract FirstClaimPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9846,
                    "name": "FirstClaimPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6959,
                    "src": "3573:14:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                      "typeString": "contract FirstClaimPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9849,
                  "name": "_periodStart",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3607:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3607:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9851,
                  "name": "_periodEnd",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3631:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3631:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9853,
                  "name": "_maxInactiveDays",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3653:24:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9855,
                  "name": "_cycleLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9889,
                  "src": "3681:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3681:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3529:175:30"
            },
            "returnParameters": {
              "id": 9864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3773:0:30"
            },
            "scope": 10762,
            "src": "3518:466:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9958,
              "nodeType": "Block",
              "src": "4187:520:30",
              "statements": [
                {
                  "assignments": [
                    9893
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9893,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4191:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                        "typeString": "contract DAOToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9892,
                        "name": "DAOToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14470,
                        "src": "4191:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9897,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9894,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "4208:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 9895,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nativeToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12441,
                      "src": "4208:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                        "typeString": "function () view external returns (contract DAOToken)"
                      }
                    },
                    "id": 9896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4208:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOToken_$14470",
                      "typeString": "contract DAOToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4191:37:30"
                },
                {
                  "assignments": [
                    9899
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9899,
                      "name": "prevBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4232:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9898,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4232:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9906,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9903,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22329,
                            "src": "4278:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          ],
                          "id": 9902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4270:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4270:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9900,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9893,
                        "src": "4254:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 9901,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "4254:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4254:30:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4232:52:30"
                },
                {
                  "assignments": [
                    9908
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9908,
                      "name": "toWithdraw",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4288:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9907,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4288:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9915,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9912,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "4333:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$12705",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$12705",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 9911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4325:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4325:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9909,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9893,
                        "src": "4309:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 9910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "4309:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4309:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4288:53:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9920,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9893,
                            "src": "4380:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            }
                          ],
                          "id": 9919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4372:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4372:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "7472616e7366657228616464726573732c75696e7432353629",
                            "id": 9924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4420:27:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                              "typeString": "literal_string \"transfer(address,uint256)\""
                            },
                            "value": "transfer(address,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9926,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22329,
                                "src": "4461:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              ],
                              "id": 9925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4453:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 9927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4453:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9928,
                            "name": "toWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9908,
                            "src": "4472:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                              "typeString": "literal_string \"transfer(address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9922,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "4391:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 9923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4391:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 9929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4391:96:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9930,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "4492:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4503:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9916,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1286,
                        "src": "4345:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 9918,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "genericCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14271,
                      "src": "4345:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                      }
                    },
                    "id": 9932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4345:163:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "id": 9933,
                  "nodeType": "ExpressionStatement",
                  "src": "4345:163:30"
                },
                {
                  "assignments": [
                    9935
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9935,
                      "name": "newBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 9958,
                      "src": "4512:18:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9934,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4512:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9940,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9938,
                        "name": "toWithdraw",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9908,
                        "src": "4549:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9936,
                        "name": "prevBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9899,
                        "src": "4533:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "4533:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4512:48:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9942,
                          "name": "newBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9935,
                          "src": "4576:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9946,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22329,
                                  "src": "4614:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                ],
                                "id": 9945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4606:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 9947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4606:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9943,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9893,
                              "src": "4590:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "id": 9944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "4590:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 9948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4590:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4576:44:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "44414f207472616e7366657220686173206661696c6564",
                        "id": 9950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4625:25:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7403f0218db35024dba3b7afc5d5f0cf21a4bc495004386607c395037ca5e763",
                          "typeString": "literal_string \"DAO transfer has failed\""
                        },
                        "value": "DAO transfer has failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7403f0218db35024dba3b7afc5d5f0cf21a4bc495004386607c395037ca5e763",
                          "typeString": "literal_string \"DAO transfer has failed\""
                        }
                      ],
                      "id": 9941,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "4564:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4564:90:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9952,
                  "nodeType": "ExpressionStatement",
                  "src": "4564:90:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9954,
                        "name": "prevBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9899,
                        "src": "4679:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9955,
                        "name": "newBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9935,
                        "src": "4692:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9953,
                      "name": "WithdrawFromDao",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9796,
                      "src": "4663:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 9956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4663:40:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9957,
                  "nodeType": "EmitStatement",
                  "src": "4658:45:30"
                }
              ]
            },
            "documentation": "@dev On a daily basis UBIScheme withdraws tokens from GoodDao.\nEmits event with caller address and last day balance and the\nupdated balance.",
            "id": 9959,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_withdrawFromDao",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4175:2:30"
            },
            "returnParameters": {
              "id": 9891,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4187:0:30"
            },
            "scope": 10762,
            "src": "4150:557:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9977,
              "nodeType": "Block",
              "src": "4874:96:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9967,
                          "name": "_newLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9961,
                          "src": "4886:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4899:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4886:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6379636c65206d757374206265206174206c65617374203120646179206c6f6e67",
                        "id": 9970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4902:35:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4bb6d9927e3f803f33b9aed770e451e0834520a0358f260abbccaa1fac228c59",
                          "typeString": "literal_string \"cycle must be at least 1 day long\""
                        },
                        "value": "cycle must be at least 1 day long"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4bb6d9927e3f803f33b9aed770e451e0834520a0358f260abbccaa1fac228c59",
                          "typeString": "literal_string \"cycle must be at least 1 day long\""
                        }
                      ],
                      "id": 9966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "4878:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4878:60:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9972,
                  "nodeType": "ExpressionStatement",
                  "src": "4878:60:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9973,
                      "name": "cycleLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9765,
                      "src": "4942:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9974,
                      "name": "_newLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9961,
                      "src": "4956:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4942:24:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9976,
                  "nodeType": "ExpressionStatement",
                  "src": "4942:24:30"
                }
              ]
            },
            "documentation": "@dev sets the ubi calculation cycle length\n@param _newLength the new length in days",
            "id": 9978,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9964,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9963,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "4863:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4863:10:30"
              }
            ],
            "name": "setCycleLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9961,
                  "name": "_newLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 9978,
                  "src": "4836:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4836:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4835:20:30"
            },
            "returnParameters": {
              "id": 9965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4874:0:30"
            },
            "scope": 10762,
            "src": "4812:158:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9991,
              "nodeType": "Block",
              "src": "5102:48:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5139:6:30",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9985,
                            "name": "startOfCycle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9769,
                            "src": "5121:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9983,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22173,
                            "src": "5113:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21263,
                          "src": "5113:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 9986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5113:21:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "5113:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5113:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9982,
                  "id": 9990,
                  "nodeType": "Return",
                  "src": "5106:40:30"
                }
              ]
            },
            "documentation": "@dev returns the day count since start of current cycle",
            "id": 9992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentDayInCycle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5069:2:30"
            },
            "returnParameters": {
              "id": 9982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9981,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9992,
                  "src": "5093:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5093:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5092:9:30"
            },
            "scope": 10762,
            "src": "5043:107:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10114,
              "nodeType": "Block",
              "src": "5415:1041:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10001,
                      "name": "setDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10130,
                      "src": "5419:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5419:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10003,
                  "nodeType": "ExpressionStatement",
                  "src": "5419:8:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10004,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "5494:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10005,
                      "name": "lastWithdrawDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9759,
                      "src": "5508:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5494:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10111,
                  "nodeType": "IfStatement",
                  "src": "5490:943:30",
                  "trueBody": {
                    "id": 10110,
                    "nodeType": "Block",
                    "src": "5525:908:30",
                    "statements": [
                      {
                        "assignments": [
                          10008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10008,
                            "name": "token",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "5530:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DAOToken_$14470",
                              "typeString": "contract DAOToken"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10007,
                              "name": "DAOToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 14470,
                              "src": "5530:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10012,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10009,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "5547:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            "id": 10010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nativeToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12441,
                            "src": "5547:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                              "typeString": "function () view external returns (contract DAOToken)"
                            }
                          },
                          "id": 10011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5547:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DAOToken_$14470",
                            "typeString": "contract DAOToken"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5530:37:30"
                      },
                      {
                        "assignments": [
                          10014
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10014,
                            "name": "currentBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "5572:22:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10013,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5572:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10021,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10018,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22329,
                                  "src": "5621:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                    "typeString": "contract UBIScheme"
                                  }
                                ],
                                "id": 10017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5613:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5613:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10015,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10008,
                              "src": "5597:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOToken_$14470",
                                "typeString": "contract DAOToken"
                              }
                            },
                            "id": 10016,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "5597:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 10020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5597:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5572:55:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 10022,
                              "name": "currentDayInCycle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9992,
                              "src": "5642:17:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 10023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5642:19:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10024,
                            "name": "currentCycleLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9771,
                            "src": "5665:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5642:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10068,
                        "nodeType": "IfStatement",
                        "src": "5633:475:30",
                        "trueBody": {
                          "id": 10067,
                          "nodeType": "Block",
                          "src": "5723:385:30",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 10026,
                                "name": "shouldWithdrawFromDAO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9763,
                                "src": "5733:21:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10030,
                              "nodeType": "IfStatement",
                              "src": "5729:45:30",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 10027,
                                    "name": "_withdrawFromDao",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9959,
                                    "src": "5756:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                      "typeString": "function ()"
                                    }
                                  },
                                  "id": 10028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5756:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 10029,
                                "nodeType": "ExpressionStatement",
                                "src": "5756:18:30"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10031,
                                  "name": "currentBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10014,
                                  "src": "5780:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10035,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22329,
                                          "src": "5821:4:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                            "typeString": "contract UBIScheme"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                            "typeString": "contract UBIScheme"
                                          }
                                        ],
                                        "id": 10034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5813:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 10036,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5813:13:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10032,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10008,
                                      "src": "5797:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                                        "typeString": "contract DAOToken"
                                      }
                                    },
                                    "id": 10033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21458,
                                    "src": "5797:15:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 10037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5797:30:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5780:47:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10039,
                              "nodeType": "ExpressionStatement",
                              "src": "5780:47:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10040,
                                  "name": "dailyCyclePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9767,
                                  "src": "5833:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 10043,
                                      "name": "cycleLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9765,
                                      "src": "5869:11:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10041,
                                      "name": "currentBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10014,
                                      "src": "5850:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21239,
                                    "src": "5850:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 10044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5850:31:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5833:48:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10046,
                              "nodeType": "ExpressionStatement",
                              "src": "5833:48:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10047,
                                  "name": "currentCycleLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9771,
                                  "src": "5887:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 10048,
                                  "name": "cycleLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9765,
                                  "src": "5908:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5887:32:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10050,
                              "nodeType": "ExpressionStatement",
                              "src": "5887:32:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10051,
                                  "name": "startOfCycle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9769,
                                  "src": "5925:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 10054,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5948:7:30",
                                        "subdenomination": "hours",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3600_by_1",
                                          "typeString": "int_const 3600"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_3600_by_1",
                                          "typeString": "int_const 3600"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10052,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "5940:3:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 10053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21239,
                                      "src": "5940:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10055,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5940:16:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5959:7:30",
                                    "subdenomination": "hours",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3600_by_1",
                                      "typeString": "int_const 3600"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5940:26:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5925:41:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10059,
                              "nodeType": "ExpressionStatement",
                              "src": "5925:41:30"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10061,
                                    "name": "currentDay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1463,
                                    "src": "6026:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10062,
                                    "name": "currentBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10014,
                                    "src": "6043:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10063,
                                    "name": "cycleLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9765,
                                    "src": "6064:11:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10064,
                                    "name": "dailyCyclePool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9767,
                                    "src": "6082:14:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10060,
                                  "name": "UBICycleCalculated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9830,
                                  "src": "6001:18:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 10065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6001:101:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10066,
                              "nodeType": "EmitStatement",
                              "src": "5996:106:30"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10069,
                            "name": "lastWithdrawDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9759,
                            "src": "6113:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10070,
                            "name": "currentDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "6131:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6113:28:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10072,
                        "nodeType": "ExpressionStatement",
                        "src": "6113:28:30"
                      },
                      {
                        "assignments": [
                          10074
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10074,
                            "name": "funds",
                            "nodeType": "VariableDeclaration",
                            "scope": 10110,
                            "src": "6146:19:30",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                              "typeString": "struct UBIScheme.Funds"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10073,
                              "name": "Funds",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9778,
                              "src": "6146:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10078,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10075,
                            "name": "dailyUBIHistory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9782,
                            "src": "6168:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Funds_$9778_storage_$",
                              "typeString": "mapping(uint256 => struct UBIScheme.Funds storage ref)"
                            }
                          },
                          "id": 10077,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10076,
                            "name": "currentDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "6184:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6168:27:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Funds_$9778_storage",
                            "typeString": "struct UBIScheme.Funds storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6146:49:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10079,
                              "name": "funds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10074,
                              "src": "6200:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds storage pointer"
                              }
                            },
                            "id": 10081,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasWithdrawn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9775,
                            "src": "6200:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10082,
                            "name": "shouldWithdrawFromDAO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9763,
                            "src": "6221:21:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6200:42:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10084,
                        "nodeType": "ExpressionStatement",
                        "src": "6200:42:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10085,
                              "name": "funds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10074,
                              "src": "6247:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Funds_$9778_storage_ptr",
                                "typeString": "struct UBIScheme.Funds storage pointer"
                              }
                            },
                            "id": 10087,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "openAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9777,
                            "src": "6247:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10088,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10014,
                            "src": "6266:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6247:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10090,
                        "nodeType": "ExpressionStatement",
                        "src": "6247:33:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10091,
                            "name": "activeUsersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9757,
                            "src": "6289:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6308:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6289:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10102,
                        "nodeType": "IfStatement",
                        "src": "6285:85:30",
                        "trueBody": {
                          "id": 10101,
                          "nodeType": "Block",
                          "src": "6311:59:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10094,
                                  "name": "dailyUbi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9752,
                                  "src": "6317:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 10097,
                                      "name": "activeUsersCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9757,
                                      "src": "6347:16:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10095,
                                      "name": "dailyCyclePool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9767,
                                      "src": "6328:14:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21239,
                                    "src": "6328:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 10098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6328:36:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6317:47:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10100,
                              "nodeType": "ExpressionStatement",
                              "src": "6317:47:30"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10104,
                              "name": "currentDay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1463,
                              "src": "6393:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10105,
                              "name": "dailyUbi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9752,
                              "src": "6405:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10106,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22161,
                                "src": "6415:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 10107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6415:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10103,
                            "name": "UBICalculated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9820,
                            "src": "6379:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256)"
                            }
                          },
                          "id": 10108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6379:49:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10109,
                        "nodeType": "EmitStatement",
                        "src": "6374:54:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10112,
                    "name": "dailyUbi",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9752,
                    "src": "6444:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10000,
                  "id": 10113,
                  "nodeType": "Return",
                  "src": "6437:15:30"
                }
              ]
            },
            "documentation": "@dev The claim calculation formula. Divided the daily balance with\nthe sum of the active users.\n@return The amount of GoodDollar the user can claim",
            "id": 10115,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "distributionFormula",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9994,
                  "name": "reserve",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5352:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9993,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5352:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9996,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5369:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9995,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5369:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5351:31:30"
            },
            "returnParameters": {
              "id": 10000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9999,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10115,
                  "src": "5405:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9998,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5405:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5404:9:30"
            },
            "scope": 10762,
            "src": "5323:1133:30",
            "stateMutability": "nonpayable",
            "superFunction": 1517,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10129,
              "nodeType": "Block",
              "src": "6578:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10118,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "6582:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6622:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10121,
                                  "name": "periodStart",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 855,
                                  "src": "6604:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10119,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "6596:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "6596:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6596:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10123,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6595:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "6595:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6595:34:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6582:47:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10128,
                  "nodeType": "ExpressionStatement",
                  "src": "6582:47:30"
                }
              ]
            },
            "documentation": "dev Sets the currentDay variable to amount of days\nsince start of contract.",
            "id": 10130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDay",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6568:2:30"
            },
            "returnParameters": {
              "id": 10117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6578:0:30"
            },
            "scope": 10762,
            "src": "6553:80:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10144,
              "nodeType": "Block",
              "src": "6854:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10137,
                          "name": "claimDay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "6865:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Day_$1453_storage_$",
                            "typeString": "mapping(uint256 => struct AbstractUBI.Day storage ref)"
                          }
                        },
                        "id": 10139,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10138,
                          "name": "currentDay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1463,
                          "src": "6874:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6865:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage",
                          "typeString": "struct AbstractUBI.Day storage ref"
                        }
                      },
                      "id": 10140,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hasClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "6865:31:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 10142,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10141,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10132,
                      "src": "6897:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6865:40:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10136,
                  "id": 10143,
                  "nodeType": "Return",
                  "src": "6858:47:30"
                }
              ]
            },
            "documentation": "@dev Checks if the given account has claimed today\n@param account to check\n@return True if the given user has already claimed today",
            "id": 10145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasClaimed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10132,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10145,
                  "src": "6810:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6810:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6809:17:30"
            },
            "returnParameters": {
              "id": 10136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10135,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10145,
                  "src": "6848:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10134,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6848:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6847:6:30"
            },
            "scope": 10762,
            "src": "6790:119:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10167,
              "nodeType": "Block",
              "src": "7152:147:30",
              "statements": [
                {
                  "assignments": [
                    10153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10153,
                      "name": "lastClaimed",
                      "nodeType": "VariableDeclaration",
                      "scope": 10167,
                      "src": "7156:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7156:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10157,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10154,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1461,
                      "src": "7178:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 10156,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10155,
                      "name": "_account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10147,
                      "src": "7190:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7178:21:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7156:43:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10158,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10153,
                      "src": "7207:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7221:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7207:15:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10164,
                  "nodeType": "IfStatement",
                  "src": "7203:77:30",
                  "trueBody": {
                    "id": 10163,
                    "nodeType": "Block",
                    "src": "7224:56:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7271:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10151,
                        "id": 10162,
                        "nodeType": "Return",
                        "src": "7264:11:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7290:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10151,
                  "id": 10166,
                  "nodeType": "Return",
                  "src": "7283:12:30"
                }
              ]
            },
            "documentation": "@dev Checks if the given account has been owned by a registered user.\n@param _account to check\n@return True for an existing user. False for a new user",
            "id": 10168,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isNotNewUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10147,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10168,
                  "src": "7107:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10146,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7107:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7106:18:30"
            },
            "returnParameters": {
              "id": 10151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10150,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10168,
                  "src": "7146:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10149,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7146:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7145:6:30"
            },
            "scope": 10762,
            "src": "7085:214:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10205,
              "nodeType": "Block",
              "src": "7780:257:30",
              "statements": [
                {
                  "assignments": [
                    10176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10176,
                      "name": "lastClaimed",
                      "nodeType": "VariableDeclaration",
                      "scope": 10205,
                      "src": "7784:19:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10175,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7784:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10180,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10177,
                      "name": "lastClaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1461,
                      "src": "7806:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 10179,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10178,
                      "name": "_account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10170,
                      "src": "7818:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7806:21:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7784:43:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10182,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10170,
                        "src": "7848:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10181,
                      "name": "isNotNewUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10168,
                      "src": "7835:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 10183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7835:22:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10202,
                  "nodeType": "IfStatement",
                  "src": "7831:187:30",
                  "trueBody": {
                    "id": 10201,
                    "nodeType": "Block",
                    "src": "7859:159:30",
                    "statements": [
                      {
                        "assignments": [
                          10185
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10185,
                            "name": "daysSinceLastClaim",
                            "nodeType": "VariableDeclaration",
                            "scope": 10201,
                            "src": "7864:26:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10184,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7864:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10193,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7918:6:30",
                              "subdenomination": "days",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10188,
                                  "name": "lastClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10176,
                                  "src": "7901:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10186,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "7893:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "7893:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7893:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21239,
                            "src": "7893:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7893:32:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7864:61:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10194,
                            "name": "daysSinceLastClaim",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10185,
                            "src": "7934:18:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10195,
                            "name": "maxInactiveDays",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9761,
                            "src": "7955:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7934:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10200,
                        "nodeType": "IfStatement",
                        "src": "7930:84:30",
                        "trueBody": {
                          "id": 10199,
                          "nodeType": "Block",
                          "src": "7972:42:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 10197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8004:4:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 10174,
                              "id": 10198,
                              "nodeType": "Return",
                              "src": "7997:11:30"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8028:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10174,
                  "id": 10204,
                  "nodeType": "Return",
                  "src": "8021:12:30"
                }
              ]
            },
            "documentation": "@dev Checks weather the given address is owned by an active user.\nA registered user is a user that claimed at least one time. An\nactive user is a user that claimed at least one time but claimed\nat least one time in the last `maxInactiveDays` days. A user that\nhas not claimed for `maxInactiveDays` is an inactive user.\n@param _account to check\n@return True for active user",
            "id": 10206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isActiveUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10170,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10206,
                  "src": "7735:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10169,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7735:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7734:18:30"
            },
            "returnParameters": {
              "id": 10174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10206,
                  "src": "7774:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7774:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7773:6:30"
            },
            "scope": 10762,
            "src": "7713:324:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10317,
              "nodeType": "Block",
              "src": "8531:719:30",
              "statements": [
                {
                  "assignments": [
                    10218
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10218,
                      "name": "day",
                      "nodeType": "VariableDeclaration",
                      "scope": 10317,
                      "src": "8558:15:30",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                        "typeString": "struct AbstractUBI.Day"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10217,
                        "name": "Day",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1453,
                        "src": "8558:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                          "typeString": "struct AbstractUBI.Day"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10222,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10219,
                      "name": "claimDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1457,
                      "src": "8576:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Day_$1453_storage_$",
                        "typeString": "mapping(uint256 => struct AbstractUBI.Day storage ref)"
                      }
                    },
                    "id": 10221,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10220,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "8585:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8576:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Day_$1453_storage",
                      "typeString": "struct AbstractUBI.Day storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8558:38:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10223,
                        "name": "day",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10218,
                        "src": "8600:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                          "typeString": "struct AbstractUBI.Day storage pointer"
                        }
                      },
                      "id": 10225,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amountOfClaimers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1450,
                      "src": "8600:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8648:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10226,
                            "name": "day",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10218,
                            "src": "8623:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                              "typeString": "struct AbstractUBI.Day storage pointer"
                            }
                          },
                          "id": 10227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amountOfClaimers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1450,
                          "src": "8623:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "8623:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8623:27:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8600:50:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10232,
                  "nodeType": "ExpressionStatement",
                  "src": "8600:50:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10233,
                          "name": "day",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10218,
                          "src": "8654:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                            "typeString": "struct AbstractUBI.Day storage pointer"
                          }
                        },
                        "id": 10236,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "8654:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10237,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10235,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10208,
                        "src": "8669:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8654:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 10238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8681:4:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8654:31:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10240,
                  "nodeType": "ExpressionStatement",
                  "src": "8654:31:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10241,
                        "name": "lastClaimed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1461,
                        "src": "8689:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 10243,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10242,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10208,
                        "src": "8701:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8689:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10244,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "8713:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8689:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10246,
                  "nodeType": "ExpressionStatement",
                  "src": "8689:27:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8753:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10247,
                          "name": "totalClaimsPerUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9790,
                          "src": "8720:18:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 10249,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10248,
                          "name": "_account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10208,
                          "src": "8739:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8720:28:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "8720:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 10252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8720:35:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10253,
                  "nodeType": "ExpressionStatement",
                  "src": "8720:35:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10254,
                    "name": "_isFirstTime",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10214,
                    "src": "8804:12:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10315,
                    "nodeType": "Block",
                    "src": "8988:259:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10278,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10218,
                              "src": "8993:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                "typeString": "struct AbstractUBI.Day storage pointer"
                              }
                            },
                            "id": 10280,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1452,
                            "src": "8993:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10284,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10210,
                                "src": "9031:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10281,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10218,
                                  "src": "9011:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                    "typeString": "struct AbstractUBI.Day storage pointer"
                                  }
                                },
                                "id": 10282,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "claimAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1452,
                                "src": "9011:15:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "9011:19:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9011:28:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8993:46:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10287,
                        "nodeType": "ExpressionStatement",
                        "src": "8993:46:30"
                      },
                      {
                        "assignments": [
                          10289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10289,
                            "name": "token",
                            "nodeType": "VariableDeclaration",
                            "scope": 10315,
                            "src": "9044:16:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GoodDollar_$3767",
                              "typeString": "contract GoodDollar"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10288,
                              "name": "GoodDollar",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3767,
                              "src": "9044:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10297,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10292,
                                      "name": "avatar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9082:6:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12705",
                                        "typeString": "contract Avatar"
                                      }
                                    },
                                    "id": 10293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nativeToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12441,
                                    "src": "9082:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                                      "typeString": "function () view external returns (contract DAOToken)"
                                    }
                                  },
                                  "id": 10294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9082:20:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                ],
                                "id": 10291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9074:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9074:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10290,
                            "name": "GoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3767,
                            "src": "9063:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_GoodDollar_$3767_$",
                              "typeString": "type(contract GoodDollar)"
                            }
                          },
                          "id": 10296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9063:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$3767",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9044:60:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10301,
                                  "name": "_account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10208,
                                  "src": "9132:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 10302,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10210,
                                  "src": "9142:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10299,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10289,
                                  "src": "9117:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                    "typeString": "contract GoodDollar"
                                  }
                                },
                                "id": 10300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3453,
                                "src": "9117:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 10303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9117:33:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636c61696d207472616e73666572206661696c6564",
                              "id": 10304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9152:23:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c4cf8060bec7e67734d714ae3d9a6feb22c3bb4052d0a3cf4ec9c2e259dd279",
                                "typeString": "literal_string \"claim transfer failed\""
                              },
                              "value": "claim transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c4cf8060bec7e67734d714ae3d9a6feb22c3bb4052d0a3cf4ec9c2e259dd279",
                                "typeString": "literal_string \"claim transfer failed\""
                              }
                            ],
                            "id": 10298,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22175,
                            "src": "9109:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9109:67:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10306,
                        "nodeType": "ExpressionStatement",
                        "src": "9109:67:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 10307,
                          "name": "_isClaimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10212,
                          "src": "9185:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10314,
                        "nodeType": "IfStatement",
                        "src": "9181:62:30",
                        "trueBody": {
                          "id": 10313,
                          "nodeType": "Block",
                          "src": "9197:46:30",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10309,
                                    "name": "_account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10208,
                                    "src": "9219:8:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10310,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10210,
                                    "src": "9229:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10308,
                                  "name": "UBIClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1475,
                                  "src": "9208:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 10311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9208:29:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10312,
                              "nodeType": "EmitStatement",
                              "src": "9203:34:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 10316,
                  "nodeType": "IfStatement",
                  "src": "8800:447:30",
                  "trueBody": {
                    "id": 10277,
                    "nodeType": "Block",
                    "src": "8818:164:30",
                    "statements": [
                      {
                        "assignments": [
                          10256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10256,
                            "name": "awardAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 10277,
                            "src": "8823:19:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10255,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8823:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10261,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10259,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10208,
                              "src": "8870:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10257,
                              "name": "firstClaimPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9773,
                              "src": "8845:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                "typeString": "contract FirstClaimPool"
                              }
                            },
                            "id": 10258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "awardUser",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6912,
                            "src": "8845:24:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 10260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8845:34:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8823:56:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10262,
                              "name": "day",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10218,
                              "src": "8884:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                "typeString": "struct AbstractUBI.Day storage pointer"
                              }
                            },
                            "id": 10264,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1452,
                            "src": "8884:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10268,
                                "name": "awardAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10256,
                                "src": "8922:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10265,
                                  "name": "day",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10218,
                                  "src": "8902:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Day_$1453_storage_ptr",
                                    "typeString": "struct AbstractUBI.Day storage pointer"
                                  }
                                },
                                "id": 10266,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "claimAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1452,
                                "src": "8902:15:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "8902:19:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10269,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8902:32:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8884:50:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10271,
                        "nodeType": "ExpressionStatement",
                        "src": "8884:50:30"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10273,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10208,
                              "src": "8955:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10274,
                              "name": "awardAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10256,
                              "src": "8965:11:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10272,
                            "name": "UBIClaimed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1475,
                            "src": "8944:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8944:33:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10276,
                        "nodeType": "EmitStatement",
                        "src": "8939:38:30"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Transfers `amount` DAO tokens to `account`. Updates stats\nand emits an event in case of claimed.\nIn case that `isFirstTime` is true, it awards the user.\n@param _account the account which recieves the funds\n@param _amount the amount to transfer\n@param _isClaimed true for claimed\n@param _isFirstTime true for new user or fished user",
            "id": 10318,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transferTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10208,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8443:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10207,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8443:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10210,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8463:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10209,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8463:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10212,
                  "name": "_isClaimed",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8482:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8482:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10214,
                  "name": "_isFirstTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 10318,
                  "src": "8501:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10213,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8501:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8439:82:30"
            },
            "returnParameters": {
              "id": 10216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8531:0:30"
            },
            "scope": 10762,
            "src": "8415:835:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10381,
              "nodeType": "Block",
              "src": "9667:577:30",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "9739:25:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10326,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "9753:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9753:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 10325,
                          "name": "isNotNewUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10168,
                          "src": "9740:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9740:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10330,
                        "name": "fishedUsersAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9786,
                        "src": "9768:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10333,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10331,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "9789:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9789:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9768:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9739:61:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10340,
                  "nodeType": "IfStatement",
                  "src": "9735:112:30",
                  "trueBody": {
                    "id": 10339,
                    "nodeType": "Block",
                    "src": "9802:45:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10335,
                              "name": "firstClaimPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9773,
                              "src": "9814:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                "typeString": "contract FirstClaimPool"
                              }
                            },
                            "id": 10336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6777,
                            "src": "9814:26:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 10337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9814:28:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10324,
                        "id": 10338,
                        "nodeType": "Return",
                        "src": "9807:35:30"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10341,
                      "name": "currentDay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "9949:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9990:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10344,
                                  "name": "periodStart",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 855,
                                  "src": "9972:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10342,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "9964:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21263,
                                "src": "9964:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9964:20:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10346,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9963:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "9963:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9963:34:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9949:48:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10360,
                  "nodeType": "IfStatement",
                  "src": "9945:108:30",
                  "trueBody": {
                    "id": 10359,
                    "nodeType": "Block",
                    "src": "9999:54:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10352,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22171,
                                  "src": "10022:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10022:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 10351,
                              "name": "hasClaimed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10145,
                              "src": "10011:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 10354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10011:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 10356,
                            "name": "dailyUbi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9752,
                            "src": "10040:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "10011:37:30",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10036:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10324,
                        "id": 10358,
                        "nodeType": "Return",
                        "src": "10004:44:30"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    10362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10362,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 10381,
                      "src": "10097:14:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DAOToken_$14470",
                        "typeString": "contract DAOToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10361,
                        "name": "DAOToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14470,
                        "src": "10097:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10366,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10363,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "10114:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 10364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nativeToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12441,
                      "src": "10114:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                        "typeString": "function () view external returns (contract DAOToken)"
                      }
                    },
                    "id": 10365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10114:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DAOToken_$14470",
                      "typeString": "contract DAOToken"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10097:37:30"
                },
                {
                  "assignments": [
                    10368
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10368,
                      "name": "currentBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 10381,
                      "src": "10138:22:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10367,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10138:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10375,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10372,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22329,
                            "src": "10187:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_UBIScheme_$10762",
                              "typeString": "contract UBIScheme"
                            }
                          ],
                          "id": 10371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10179:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10179:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10369,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10362,
                        "src": "10163:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DAOToken_$14470",
                          "typeString": "contract DAOToken"
                        }
                      },
                      "id": 10370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21458,
                      "src": "10163:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 10374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10163:30:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10138:55:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10378,
                        "name": "activeUsersCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9757,
                        "src": "10223:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10376,
                        "name": "currentBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10368,
                        "src": "10204:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 10377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "10204:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 10379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10204:36:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10324,
                  "id": 10380,
                  "nodeType": "Return",
                  "src": "10197:43:30"
                }
              ]
            },
            "documentation": "@dev Checks the amount which the sender address is eligible to claim for,\nregardless if they have been whitelisted or not. In case the user is\nactive, then the current day must be equal to the actual day, i.e. claim\nor fish has already been executed today.\n@return The amount of GD tokens the address can claim.",
            "id": 10382,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10320,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "9635:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9635:13:30"
              }
            ],
            "name": "checkEntitlement",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10319,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9620:2:30"
            },
            "returnParameters": {
              "id": 10324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10323,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10382,
                  "src": "9658:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10322,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9658:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9657:9:30"
            },
            "scope": 10762,
            "src": "9595:649:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10458,
              "nodeType": "Block",
              "src": "10642:960:30",
              "statements": [
                {
                  "assignments": [
                    10390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10390,
                      "name": "newDistribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 10458,
                      "src": "10964:23:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10389,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10964:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11010:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 10393,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10384,
                        "src": "11013:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10391,
                      "name": "distributionFormula",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10115
                      ],
                      "referencedDeclaration": 10115,
                      "src": "10990:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) returns (uint256)"
                      }
                    },
                    "id": 10394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10990:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10964:58:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 10403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10397,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11127:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10396,
                          "name": "isNotNewUser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10168,
                          "src": "11114:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11114:22:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 10402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "11143:31:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10399,
                            "name": "fishedUsersAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9786,
                            "src": "11144:20:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 10401,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10400,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11165:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11144:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "11114:60:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "11181:21:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10405,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10384,
                            "src": "11193:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10404,
                          "name": "hasClaimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10145,
                          "src": "11182:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11182:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11114:88:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 10426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 10422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "11298:23:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10420,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10384,
                              "src": "11312:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10419,
                            "name": "isNotNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10168,
                            "src": "11299:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11299:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10423,
                          "name": "fishedUsersAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9786,
                          "src": "11325:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 10425,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10424,
                          "name": "_account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10384,
                          "src": "11346:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11325:30:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "11298:57:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 10454,
                    "nodeType": "IfStatement",
                    "src": "11294:289:30",
                    "trueBody": {
                      "id": 10453,
                      "nodeType": "Block",
                      "src": "11357:226:30",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 10427,
                              "name": "activeUsersCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9757,
                              "src": "11398:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 10430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11438:1:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10428,
                                  "name": "activeUsersCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9757,
                                  "src": "11417:16:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "11417:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11417:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11398:42:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10433,
                          "nodeType": "ExpressionStatement",
                          "src": "11398:42:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10434,
                                "name": "fishedUsersAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9786,
                                "src": "11445:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 10436,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10435,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11466:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "11445:30:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 10437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11478:5:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "src": "11445:38:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 10439,
                          "nodeType": "ExpressionStatement",
                          "src": "11445:38:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10441,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11504:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11514:1:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 10443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11517:5:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 10444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11524:4:30",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 10440,
                              "name": "_transferTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10318,
                              "src": "11488:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                "typeString": "function (address,uint256,bool,bool)"
                              }
                            },
                            "id": 10445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11488:41:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 10446,
                          "nodeType": "ExpressionStatement",
                          "src": "11488:41:30"
                        },
                        {
                          "eventCall": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10448,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10384,
                                "src": "11553:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10447,
                              "name": "ActivatedUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9800,
                              "src": "11539:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                "typeString": "function (address)"
                              }
                            },
                            "id": 10449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11539:23:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 10450,
                          "nodeType": "EmitStatement",
                          "src": "11534:28:30"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 10451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11574:4:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "functionReturnParameters": 10388,
                          "id": 10452,
                          "nodeType": "Return",
                          "src": "11567:11:30"
                        }
                      ]
                    }
                  },
                  "id": 10455,
                  "nodeType": "IfStatement",
                  "src": "11106:477:30",
                  "trueBody": {
                    "id": 10418,
                    "nodeType": "Block",
                    "src": "11207:81:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10410,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10384,
                              "src": "11228:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10411,
                              "name": "newDistribution",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10390,
                              "src": "11238:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 10412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11255:4:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 10413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11261:5:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10409,
                            "name": "_transferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10318,
                            "src": "11212:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool,bool)"
                            }
                          },
                          "id": 10414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11212:55:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10415,
                        "nodeType": "ExpressionStatement",
                        "src": "11212:55:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11279:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10388,
                        "id": 10417,
                        "nodeType": "Return",
                        "src": "11272:11:30"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 10456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11593:5:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 10388,
                  "id": 10457,
                  "nodeType": "Return",
                  "src": "11586:12:30"
                }
              ]
            },
            "documentation": "@dev Function for claiming UBI. Requires contract to be active. Calls distributionFormula,\ncalculats the amount the account can claims, and transfers the amount to the account.\nEmits the address of account and amount claimed.\n@param _account The claimer account\n@return A bool indicating if UBI was claimed",
            "id": 10459,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_claim",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10384,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10459,
                  "src": "10600:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10383,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10600:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10599:18:30"
            },
            "returnParameters": {
              "id": 10388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10387,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10459,
                  "src": "10636:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10386,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10636:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10635:6:30"
            },
            "scope": 10762,
            "src": "10584:1018:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10475,
              "nodeType": "Block",
              "src": "12023:33:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10471,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "12041:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12041:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 10470,
                      "name": "_claim",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10459,
                      "src": "12034:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) returns (bool)"
                      }
                    },
                    "id": 10473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12034:18:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10469,
                  "id": 10474,
                  "nodeType": "Return",
                  "src": "12027:25:30"
                }
              ]
            },
            "documentation": "@dev Function for claiming UBI. Requires contract to be active and claimer to be whitelisted.\nCalls distributionFormula, calculats the amount the caller can claim, and transfers the amount\nto the caller. Emits the address of caller and amount claimed.\n@return A bool indicating if UBI was claimed",
            "id": 10476,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10462,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10461,
                  "name": "requireStarted",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9841,
                  "src": "11956:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11956:14:30"
              },
              {
                "arguments": null,
                "id": 10464,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10463,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "11973:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11973:13:30"
              },
              {
                "arguments": null,
                "id": 10466,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10465,
                  "name": "onlyWhitelisted",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2576,
                  "src": "11989:15:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11989:15:30"
              }
            ],
            "name": "claim",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10460,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11942:2:30"
            },
            "returnParameters": {
              "id": 10469,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10468,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10476,
                  "src": "12016:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10467,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12016:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12015:6:30"
            },
            "scope": 10762,
            "src": "11928:128:30",
            "stateMutability": "nonpayable",
            "superFunction": 1784,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10542,
              "nodeType": "Block",
              "src": "12691:805:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10487,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10478,
                              "src": "12857:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10486,
                            "name": "isNotNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10168,
                            "src": "12844:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12844:22:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 10492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "12870:23:30",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10490,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10478,
                                "src": "12884:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10489,
                              "name": "isActiveUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10206,
                              "src": "12871:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 10491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12871:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12844:49:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6973206e6f7420616e20696e6163746976652075736572",
                        "id": 10494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12898:25:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b91fa7e2292614c5e86a5c0d3c57699b28d2e99c278a31a45ed92dc5e3af522a",
                          "typeString": "literal_string \"is not an inactive user\""
                        },
                        "value": "is not an inactive user"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b91fa7e2292614c5e86a5c0d3c57699b28d2e99c278a31a45ed92dc5e3af522a",
                          "typeString": "literal_string \"is not an inactive user\""
                        }
                      ],
                      "id": 10485,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12832:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12832:95:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10496,
                  "nodeType": "ExpressionStatement",
                  "src": "12832:95:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "12939:31:30",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10498,
                            "name": "fishedUsersAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9786,
                            "src": "12940:20:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 10500,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10499,
                            "name": "_account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10478,
                            "src": "12961:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12940:30:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c726561647920666973686564",
                        "id": 10502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12972:16:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a89e08cef1dba2af812cfa484eae803d141a89a96f1f1ced52b688e0318ec0ff",
                          "typeString": "literal_string \"already fished\""
                        },
                        "value": "already fished"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a89e08cef1dba2af812cfa484eae803d141a89a96f1f1ced52b688e0318ec0ff",
                          "typeString": "literal_string \"already fished\""
                        }
                      ],
                      "id": 10497,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12931:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12931:58:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10504,
                  "nodeType": "ExpressionStatement",
                  "src": "12931:58:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10505,
                        "name": "fishedUsersAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9786,
                        "src": "12993:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 10507,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10506,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13014:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12993:30:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 10508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13026:4:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12993:37:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10510,
                  "nodeType": "ExpressionStatement",
                  "src": "12993:37:30"
                },
                {
                  "assignments": [
                    10512
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10512,
                      "name": "newDistribution",
                      "nodeType": "VariableDeclaration",
                      "scope": 10542,
                      "src": "13245:23:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13245:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10517,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13291:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 10515,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13294:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10513,
                      "name": "distributionFormula",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10115
                      ],
                      "referencedDeclaration": 10115,
                      "src": "13271:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) returns (uint256)"
                      }
                    },
                    "id": 10516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13271:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13245:58:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10518,
                      "name": "activeUsersCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9757,
                      "src": "13307:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13347:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10519,
                          "name": "activeUsersCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9757,
                          "src": "13326:16:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "13326:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 10522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13326:23:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13307:42:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10524,
                  "nodeType": "ExpressionStatement",
                  "src": "13307:42:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10526,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "13369:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13369:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10528,
                        "name": "newDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10512,
                        "src": "13381:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13398:5:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13405:5:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10525,
                      "name": "_transferTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10318,
                      "src": "13353:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,bool,bool)"
                      }
                    },
                    "id": 10531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13353:58:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10532,
                  "nodeType": "ExpressionStatement",
                  "src": "13353:58:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10534,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "13439:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13439:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10536,
                        "name": "_account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10478,
                        "src": "13451:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10537,
                        "name": "newDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10512,
                        "src": "13461:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10533,
                      "name": "InactiveUserFished",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9808,
                      "src": "13420:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 10538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13420:57:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10539,
                  "nodeType": "EmitStatement",
                  "src": "13415:62:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 10540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13488:4:30",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 10484,
                  "id": 10541,
                  "nodeType": "Return",
                  "src": "13481:11:30"
                }
              ]
            },
            "documentation": "@dev In order to update users from active to inactive, we give out incentive to people\nto update the status of inactive users, this action is called \"Fishing\". Anyone can\nsend a tx to the contract to mark inactive users. The \"fisherman\" receives a reward\nequal to the daily UBI (ie instead of the “fished” user). User that “last claimed” > 14\ncan be \"fished\" and made inactive (reduces active users count by one). Requires\ncontract to be active.\n@param _account to fish\n@return A bool indicating if UBI was fished",
            "id": 10543,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10481,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10480,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "12662:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12662:13:30"
              }
            ],
            "name": "fish",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10478,
                  "name": "_account",
                  "nodeType": "VariableDeclaration",
                  "scope": 10543,
                  "src": "12637:16:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12637:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12636:18:30"
            },
            "returnParameters": {
              "id": 10484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10483,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10543,
                  "src": "12685:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10482,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12685:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12684:6:30"
            },
            "scope": 10762,
            "src": "12623:873:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10616,
              "nodeType": "Block",
              "src": "13828:389:30",
              "statements": [
                {
                  "body": {
                    "id": 10606,
                    "nodeType": "Block",
                    "src": "13879:270:30",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 10564,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22164,
                              "src": "13888:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 10565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13888:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10566,
                            "name": "iterationGasLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9755,
                            "src": "13900:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13888:29:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10575,
                        "nodeType": "IfStatement",
                        "src": "13884:80:30",
                        "trueBody": {
                          "id": 10574,
                          "nodeType": "Block",
                          "src": "13919:45:30",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10569,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10554,
                                    "src": "13942:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10568,
                                  "name": "TotalFished",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9812,
                                  "src": "13930:11:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 10570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13930:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10571,
                              "nodeType": "EmitStatement",
                              "src": "13925:19:30"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10572,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10554,
                                "src": "13957:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 10552,
                              "id": 10573,
                              "nodeType": "Return",
                              "src": "13950:8:30"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 10594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 10587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10577,
                                    "name": "_accounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10546,
                                    "src": "13990:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 10579,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10578,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10554,
                                    "src": "14000:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13990:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10576,
                                "name": "isNotNewUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "13977:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13977:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 10586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "14011:27:30",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10582,
                                      "name": "_accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10546,
                                      "src": "14025:9:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10584,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10583,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10554,
                                      "src": "14035:1:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14025:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10581,
                                  "name": "isActiveUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10206,
                                  "src": "14012:12:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 10585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14012:26:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13977:61:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "14046:35:30",
                            "subExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10588,
                                "name": "fishedUsersAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9786,
                                "src": "14047:20:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 10592,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10589,
                                  "name": "_accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10546,
                                  "src": "14068:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 10591,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10590,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10554,
                                  "src": "14078:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14068:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14047:34:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13977:104:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10605,
                        "nodeType": "IfStatement",
                        "src": "13968:177:30",
                        "trueBody": {
                          "id": 10604,
                          "nodeType": "Block",
                          "src": "14087:58:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 10597,
                                          "name": "_accounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10546,
                                          "src": "14106:9:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 10599,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 10598,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10554,
                                          "src": "14116:1:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14106:12:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10596,
                                      "name": "fish",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10543,
                                      "src": "14101:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                                        "typeString": "function (address) returns (bool)"
                                      }
                                    },
                                    "id": 10600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14101:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6669736820686173206661696c6564",
                                    "id": 10601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14121:17:30",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6618a3da3c9a049c152b6f5de8825d0e3d7d60e94b72499e691f6ab90c2e73dc",
                                      "typeString": "literal_string \"fish has failed\""
                                    },
                                    "value": "fish has failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6618a3da3c9a049c152b6f5de8825d0e3d7d60e94b72499e691f6ab90c2e73dc",
                                      "typeString": "literal_string \"fish has failed\""
                                    }
                                  ],
                                  "id": 10595,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    22174,
                                    22175
                                  ],
                                  "referencedDeclaration": 22175,
                                  "src": "14093:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14093:46:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10603,
                              "nodeType": "ExpressionStatement",
                              "src": "14093:46:30"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10557,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10554,
                      "src": "13852:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10558,
                        "name": "_accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10546,
                        "src": "13856:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 10559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13856:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13852:20:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10607,
                  "initializationExpression": {
                    "assignments": [
                      10554
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10554,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 10607,
                        "src": "13837:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13837:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10556,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13849:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13837:13:30"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "13874:3:30",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10561,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10554,
                        "src": "13876:1:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10563,
                    "nodeType": "ExpressionStatement",
                    "src": "13874:3:30"
                  },
                  "nodeType": "ForStatement",
                  "src": "13832:317:30"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10609,
                          "name": "_accounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10546,
                          "src": "14169:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 10610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14169:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10608,
                      "name": "TotalFished",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9812,
                      "src": "14157:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 10611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14157:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10612,
                  "nodeType": "EmitStatement",
                  "src": "14152:34:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 10613,
                      "name": "_accounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10546,
                      "src": "14197:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 10614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "14197:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10552,
                  "id": 10615,
                  "nodeType": "Return",
                  "src": "14190:23:30"
                }
              ]
            },
            "documentation": "@dev executes `fish` with multiple addresses. emits the number of users from the given\narray who actually been tried being fished.\n@param _accounts to fish\n@return A bool indicating if all the UBIs were fished",
            "id": 10617,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10549,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10548,
                  "name": "requireActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 882,
                  "src": "13793:13:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13793:13:30"
              }
            ],
            "name": "fishMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10546,
                  "name": "_accounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 10617,
                  "src": "13754:26:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10544,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13754:7:30",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10545,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13754:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13753:28:30"
            },
            "returnParameters": {
              "id": 10552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10551,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10617,
                  "src": "13818:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13818:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13817:9:30"
            },
            "scope": 10762,
            "src": "13735:482:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10659,
              "nodeType": "Block",
              "src": "14435:276:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10622,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22330,
                        "src": "14439:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_UBIScheme_$10762",
                          "typeString": "contract super UBIScheme"
                        }
                      },
                      "id": 10624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "start",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1643,
                      "src": "14439:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14439:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10626,
                  "nodeType": "ExpressionStatement",
                  "src": "14439:13:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10627,
                      "name": "periodStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 855,
                      "src": "14456:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14478:6:30",
                              "subdenomination": "days",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10628,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22173,
                              "src": "14470:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21239,
                            "src": "14470:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14470:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14488:6:30",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_86400_by_1",
                            "typeString": "int_const 86400"
                          },
                          "value": "1"
                        },
                        "src": "14470:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3132",
                        "id": 10634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14497:8:30",
                        "subdenomination": "hours",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_43200_by_1",
                          "typeString": "int_const 43200"
                        },
                        "value": "12"
                      },
                      "src": "14470:35:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14456:49:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10637,
                  "nodeType": "ExpressionStatement",
                  "src": "14456:49:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10638,
                      "name": "startOfCycle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9769,
                      "src": "14538:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10639,
                      "name": "periodStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 855,
                      "src": "14553:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14538:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10641,
                  "nodeType": "ExpressionStatement",
                  "src": "14538:26:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10646,
                            "name": "firstClaimPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9773,
                            "src": "14603:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                              "typeString": "contract FirstClaimPool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                              "typeString": "contract FirstClaimPool"
                            }
                          ],
                          "id": 10645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14595:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14595:23:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "736574554249536368656d65286164647265737329",
                            "id": 10650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14647:23:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c336822eebd4b54d01b83037f700d04a24dc212a45909afaef5386829705ab2",
                              "typeString": "literal_string \"setUBIScheme(address)\""
                            },
                            "value": "setUBIScheme(address)"
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10652,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22329,
                                "src": "14680:4:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                  "typeString": "contract UBIScheme"
                                }
                              ],
                              "id": 10651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14672:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14672:13:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c336822eebd4b54d01b83037f700d04a24dc212a45909afaef5386829705ab2",
                              "typeString": "literal_string \"setUBIScheme(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10648,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "14623:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 10649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14623:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 10654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14623:63:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10655,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "14691:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14702:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$12705",
                          "typeString": "contract Avatar"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10642,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1286,
                        "src": "14568:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 10644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "genericCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14271,
                      "src": "14568:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                      }
                    },
                    "id": 10657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14568:139:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "id": 10658,
                  "nodeType": "ExpressionStatement",
                  "src": "14568:139:30"
                }
              ]
            },
            "documentation": "@dev Start function. Adds this contract to identity as a feeless scheme and\nadds permissions to FirstClaimPool\nCan only be called if scheme is registered",
            "id": 10660,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10620,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10619,
                  "name": "onlyRegistered",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1335,
                  "src": "14420:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14420:14:30"
              }
            ],
            "name": "start",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14410:2:30"
            },
            "returnParameters": {
              "id": 10621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14435:0:30"
            },
            "scope": 10762,
            "src": "14396:315:30",
            "stateMutability": "nonpayable",
            "superFunction": 1643,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10671,
              "nodeType": "Block",
              "src": "14910:47:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10667,
                      "name": "shouldWithdrawFromDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9763,
                      "src": "14914:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10668,
                      "name": "_shouldWithdraw",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10662,
                      "src": "14938:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "14914:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10670,
                  "nodeType": "ExpressionStatement",
                  "src": "14914:39:30"
                }
              ]
            },
            "documentation": "@dev Sets whether to also withdraw GD from avatar for UBI\n@param _shouldWithdraw boolean if to withdraw",
            "id": 10672,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10665,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10664,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "14899:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14899:10:30"
              }
            ],
            "name": "setShouldWithdrawFromDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10662,
                  "name": "_shouldWithdraw",
                  "nodeType": "VariableDeclaration",
                  "scope": 10672,
                  "src": "14870:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10661,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14870:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14869:22:30"
            },
            "returnParameters": {
              "id": 10666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14910:0:30"
            },
            "scope": 10762,
            "src": "14836:121:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10682,
              "nodeType": "Block",
              "src": "14993:19:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10677,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22330,
                        "src": "14997:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_UBIScheme_$10762",
                          "typeString": "contract super UBIScheme"
                        }
                      },
                      "id": 10679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "end",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1688,
                      "src": "14997:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14997:11:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10681,
                  "nodeType": "ExpressionStatement",
                  "src": "14997:11:30"
                }
              ]
            },
            "documentation": null,
            "id": 10683,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10675,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10674,
                  "name": "onlyAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1325,
                  "src": "14982:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14982:10:30"
              }
            ],
            "name": "end",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14972:2:30"
            },
            "returnParameters": {
              "id": 10676,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14993:0:30"
            },
            "scope": 10762,
            "src": "14960:52:30",
            "stateMutability": "nonpayable",
            "superFunction": 1688,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10760,
              "nodeType": "Block",
              "src": "15077:601:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10690,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10660
                      ],
                      "referencedDeclaration": 10660,
                      "src": "15081:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15081:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10692,
                  "nodeType": "ExpressionStatement",
                  "src": "15081:7:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10693,
                      "name": "prevUBIScheme",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10685,
                      "src": "15097:13:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15122:1:30",
                          "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": 10694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "15114:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 10696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15114:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "15097:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10759,
                  "nodeType": "IfStatement",
                  "src": "15093:582:30",
                  "trueBody": {
                    "id": 10758,
                    "nodeType": "Block",
                    "src": "15126:549:30",
                    "statements": [
                      {
                        "assignments": [
                          10699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10699,
                            "name": "gd",
                            "nodeType": "VariableDeclaration",
                            "scope": 10758,
                            "src": "15131:13:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GoodDollar_$3767",
                              "typeString": "contract GoodDollar"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10698,
                              "name": "GoodDollar",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3767,
                              "src": "15131:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10707,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10702,
                                      "name": "avatar",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "15166:6:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12705",
                                        "typeString": "contract Avatar"
                                      }
                                    },
                                    "id": 10703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nativeToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12441,
                                    "src": "15166:18:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DAOToken_$14470_$",
                                      "typeString": "function () view external returns (contract DAOToken)"
                                    }
                                  },
                                  "id": 10704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15166:20:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DAOToken_$14470",
                                    "typeString": "contract DAOToken"
                                  }
                                ],
                                "id": 10701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15158:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15158:29:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10700,
                            "name": "GoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3767,
                            "src": "15147:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_GoodDollar_$3767_$",
                              "typeString": "type(contract GoodDollar)"
                            }
                          },
                          "id": 10706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15147:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$3767",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15131:57:30"
                      },
                      {
                        "assignments": [
                          10709
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10709,
                            "name": "ubiBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 10758,
                            "src": "15194:18:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10708,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15194:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10714,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10712,
                              "name": "prevUBIScheme",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10685,
                              "src": "15228:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10710,
                              "name": "gd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10699,
                              "src": "15215:2:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                "typeString": "contract GoodDollar"
                              }
                            },
                            "id": 10711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21458,
                            "src": "15215:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 10713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15215:27:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15194:48:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10718,
                              "name": "prevUBIScheme",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10685,
                              "src": "15318:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "656e642829",
                                  "id": 10721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15361:7:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_efbe1c1ca17841a6aacc78b39fe2541c8bb21e409035e2408b6d17aee00db20f",
                                    "typeString": "literal_string \"end()\""
                                  },
                                  "value": "end()"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_efbe1c1ca17841a6aacc78b39fe2541c8bb21e409035e2408b6d17aee00db20f",
                                    "typeString": "literal_string \"end()\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10719,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22158,
                                  "src": "15337:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15337:23:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 10722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15337:32:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10723,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "15375:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15387:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10715,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1286,
                              "src": "15290:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 10717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "genericCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14271,
                            "src": "15290:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                            }
                          },
                          "id": 10725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15290:103:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "id": 10726,
                        "nodeType": "ExpressionStatement",
                        "src": "15290:103:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10731,
                                  "name": "firstClaimPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9773,
                                  "src": "15435:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                    "typeString": "contract FirstClaimPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FirstClaimPool_$6959",
                                    "typeString": "contract FirstClaimPool"
                                  }
                                ],
                                "id": 10730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15427:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15427:23:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "736574436c61696d416d6f756e742875696e7432353629",
                                  "id": 10735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15480:25:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b1c7ef0c0b07e727311a40c4390dd551f9bc2cb7e6725a87f7301ce4c0278f16",
                                    "typeString": "literal_string \"setClaimAmount(uint256)\""
                                  },
                                  "value": "setClaimAmount(uint256)"
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 10736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15507:4:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b1c7ef0c0b07e727311a40c4390dd551f9bc2cb7e6725a87f7301ce4c0278f16",
                                    "typeString": "literal_string \"setClaimAmount(uint256)\""
                                  },
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10733,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22158,
                                  "src": "15456:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15456:23:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 10737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15456:56:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10738,
                              "name": "avatar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "15518:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15530:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Avatar_$12705",
                                "typeString": "contract Avatar"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10727,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1286,
                              "src": "15399:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 10729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "genericCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14271,
                            "src": "15399:22:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12705_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                            }
                          },
                          "id": 10740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15399:137:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "id": 10741,
                        "nodeType": "ExpressionStatement",
                        "src": "15399:137:30"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10742,
                            "name": "ubiBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10709,
                            "src": "15546:10:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15559:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15546:14:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10757,
                        "nodeType": "IfStatement",
                        "src": "15542:129:30",
                        "trueBody": {
                          "id": 10756,
                          "nodeType": "Block",
                          "src": "15562:109:30",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10748,
                                    "name": "gd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10699,
                                    "src": "15607:2:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                      "typeString": "contract GoodDollar"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10750,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22329,
                                        "src": "15624:4:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                          "typeString": "contract UBIScheme"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_UBIScheme_$10762",
                                          "typeString": "contract UBIScheme"
                                        }
                                      ],
                                      "id": 10749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15616:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 10751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15616:13:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10752,
                                    "name": "ubiBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10709,
                                    "src": "15636:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10753,
                                    "name": "avatar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1281,
                                    "src": "15653:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Avatar_$12705",
                                      "typeString": "contract Avatar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_GoodDollar_$3767",
                                      "typeString": "contract GoodDollar"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_Avatar_$12705",
                                      "typeString": "contract Avatar"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10745,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1286,
                                    "src": "15568:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ControllerInterface_$14394",
                                      "typeString": "contract ControllerInterface"
                                    }
                                  },
                                  "id": 10747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "externalTokenTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14295,
                                  "src": "15568:32:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$22137_$_t_address_$_t_uint256_$_t_contract$_Avatar_$12705_$returns$_t_bool_$",
                                    "typeString": "function (contract IERC20,address,uint256,contract Avatar) external returns (bool)"
                                  }
                                },
                                "id": 10754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15568:97:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10755,
                              "nodeType": "ExpressionStatement",
                              "src": "15568:97:30"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10761,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10688,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10687,
                  "name": "onlyRegistered",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1335,
                  "src": "15062:14:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15062:14:30"
              }
            ],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10685,
                  "name": "prevUBIScheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 10761,
                  "src": "15032:21:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10684,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15032:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15031:23:30"
            },
            "returnParameters": {
              "id": 10689,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15077:0:30"
            },
            "scope": 10762,
            "src": "15015:663:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10763,
        "src": "237:15443:30"
      }
    ],
    "src": "0:15681:30"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.2",
  "updatedAt": "2021-08-23T07:33:52.331Z",
  "devdoc": {
    "methods": {
      "checkEntitlement()": {
        "details": "Checks the amount which the sender address is eligible to claim for, regardless if they have been whitelisted or not. In case the user is active, then the current day must be equal to the actual day, i.e. claim or fish has already been executed today.",
        "return": "The amount of GD tokens the address can claim."
      },
      "claim()": {
        "details": "Function for claiming UBI. Requires contract to be active and claimer to be whitelisted. Calls distributionFormula, calculats the amount the caller can claim, and transfers the amount to the caller. Emits the address of caller and amount claimed.",
        "return": "A bool indicating if UBI was claimed"
      },
      "constructor": {
        "details": "Constructor",
        "params": {
          "_avatar": "The avatar of the DAO",
          "_firstClaimPool": "A pool for GD to give out to activated users",
          "_identity": "The identity contract",
          "_maxInactiveDays": "Days of grace without claiming request",
          "_periodEnd": "The time from when the contract can end",
          "_periodStart": "The time from when the contract can start"
        }
      },
      "currentDayInCycle()": {
        "details": "returns the day count since start of current cycle"
      },
      "fish(address)": {
        "details": "In order to update users from active to inactive, we give out incentive to people to update the status of inactive users, this action is called \"Fishing\". Anyone can send a tx to the contract to mark inactive users. The \"fisherman\" receives a reward equal to the daily UBI (ie instead of the “fished” user). User that “last claimed” > 14 can be \"fished\" and made inactive (reduces active users count by one). Requires contract to be active.",
        "params": {
          "_account": "to fish"
        },
        "return": "A bool indicating if UBI was fished"
      },
      "fishMulti(address[])": {
        "details": "executes `fish` with multiple addresses. emits the number of users from the given array who actually been tried being fished.",
        "params": {
          "_accounts": "to fish"
        },
        "return": "A bool indicating if all the UBIs were fished"
      },
      "hasClaimed(address)": {
        "details": "Checks if the given account has claimed today",
        "params": {
          "account": "to check"
        },
        "return": "True if the given user has already claimed today"
      },
      "isActiveUser(address)": {
        "details": "Checks weather the given address is owned by an active user. A registered user is a user that claimed at least one time. An active user is a user that claimed at least one time but claimed at least one time in the last `maxInactiveDays` days. A user that has not claimed for `maxInactiveDays` is an inactive user.",
        "params": {
          "_account": "to check"
        },
        "return": "True for active user"
      },
      "isNotNewUser(address)": {
        "details": "Checks if the given account has been owned by a registered user.",
        "params": {
          "_account": "to check"
        },
        "return": "True for an existing user. False for a new user"
      },
      "isOwner()": {
        "return": "true if `msg.sender` is the owner of the contract."
      },
      "isRegistered()": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "isRegistered(address)": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "owner()": {
        "return": "the address of the owner."
      },
      "renounceOwnership()": {
        "details": "Allows the current owner to relinquish control of the contract."
      },
      "setAvatar(address)": {
        "details": "Function to set a new avatar and controller for scheme can only be done by owner of scheme"
      },
      "setCycleLength(uint256)": {
        "details": "sets the ubi calculation cycle length",
        "params": {
          "_newLength": "the new length in days"
        }
      },
      "setShouldWithdrawFromDAO(bool)": {
        "details": "Sets whether to also withdraw GD from avatar for UBI",
        "params": {
          "_shouldWithdraw": "boolean if to withdraw"
        }
      },
      "start()": {
        "details": "Start function. Adds this contract to identity as a feeless scheme and adds permissions to FirstClaimPool Can only be called if scheme is registered"
      },
      "transferOwnership(address)": {
        "details": "Allows the current owner to transfer control of the contract to a newOwner.",
        "params": {
          "newOwner": "The address to transfer ownership to."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "renounceOwnership()": {
        "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
      },
      "setDay()": {
        "notice": "dev Sets the currentDay variable to amount of days since start of contract."
      }
    }
  }
}