{
  "contractName": "Platform",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "operatorOf",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x636f35d3"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "referrerCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x71602692"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8da5cb5b"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minimal",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x94a53d41"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "referrerOf",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xd21cacdf"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "users",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf2020275"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor",
      "signature": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "ownerTransfership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x6fdc202f"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_game",
          "type": "address"
        }
      ],
      "name": "addGame",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xd72d04db"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_game",
          "type": "address"
        }
      ],
      "name": "delGame",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xeda30c9e"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_game",
          "type": "address"
        }
      ],
      "name": "getStatus",
      "outputs": [
        {
          "name": "status",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x30ccebb5"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        },
        {
          "name": "_referrer",
          "type": "address"
        }
      ],
      "name": "setService",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x29eae053"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        }
      ],
      "name": "getService",
      "outputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_referrer",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x15a52302"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        }
      ],
      "name": "getReferrer",
      "outputs": [
        {
          "name": "_referrer",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x4a9fefc7"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        }
      ],
      "name": "getOperator",
      "outputs": [
        {
          "name": "_operator",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x5865c60c"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "setAmountForPlayer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x08af84f0"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_player",
          "type": "address"
        }
      ],
      "name": "getMaxAmount",
      "outputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x15525991"
    }
  ],
  "bytecode": "0x6080604052683635c9adc5dea00000600155600060075534801561002257600080fd5b5060008054600160a060020a031916331790556106c7806100446000396000f3006080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308af84f081146100ea578063155259911461012257806315a523021461015557806329eae0531461019c57806330ccebb5146101c55780634a9fefc7146101e65780635865c60c14610223578063636f35d3146102445780636fdc202f1461026557806371602692146102865780638da5cb5b146102a757806394a53d41146102bc578063d21cacdf146102d1578063d72d04db146102f2578063eda30c9e14610313578063f202027514610334575b600080fd5b3480156100f657600080fd5b5061010e600160a060020a0360043516602435610349565b604080519115158252519081900360200190f35b34801561012e57600080fd5b50610143600160a060020a0360043516610382565b60408051918252519081900360200190f35b34801561016157600080fd5b50610176600160a060020a03600435166103ac565b60408051600160a060020a03938416815291909216602082015281519081900390910190f35b3480156101a857600080fd5b506101c3600160a060020a03600435811690602435166103db565b005b3480156101d157600080fd5b5061010e600160a060020a036004351661051a565b3480156101f257600080fd5b50610207600160a060020a0360043516610538565b60408051600160a060020a039092168252519081900360200190f35b34801561022f57600080fd5b50610207600160a060020a0360043516610556565b34801561025057600080fd5b50610207600160a060020a0360043516610574565b34801561027157600080fd5b506101c3600160a060020a036004351661058f565b34801561029257600080fd5b50610143600160a060020a03600435166105d5565b3480156102b357600080fd5b506102076105e7565b3480156102c857600080fd5b506101436105f6565b3480156102dd57600080fd5b50610207600160a060020a03600435166105fc565b3480156102fe57600080fd5b5061010e600160a060020a0360043516610617565b34801561031f57600080fd5b5061010e600160a060020a0360043516610658565b34801561034057600080fd5b50610143610695565b60008054600160a060020a0316331461036157600080fd5b50600160a060020a0391909116600090815260036020526040902055600190565b600160a060020a0381166000908152600360205260409020548015156103a757506001545b919050565b600160a060020a0390811660009081526005602090815260408083205460049092529091205490821692911690565b600054600160a060020a031633146103f257600080fd5b600160a060020a03828116600090815260046020526040902054161580156104325750600160a060020a0382811660009081526005602052604090205416155b151561043d57600080fd5b600160a060020a038116600081815260066020526040902080546001908101909155600780549091019055156104ad57600160a060020a038281166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19169183169190911790556104e3565b600160a060020a0382166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916331790555b50600160a060020a03166000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff191633179055565b600160a060020a031660009081526002602052604090205460ff1690565b600160a060020a039081166000908152600460205260409020541690565b600160a060020a039081166000908152600560205260409020541690565b600560205260009081526040902054600160a060020a031681565b600054600160a060020a031633146105a657600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60066020526000908152604090205481565b600054600160a060020a031681565b60015481565b600460205260009081526040902054600160a060020a031681565b60008054600160a060020a0316331461062f57600080fd5b50600160a060020a03166000908152600260205260409020805460ff1916600190811790915590565b60008054600160a060020a0316331461067057600080fd5b50600160a060020a03166000908152600260205260409020805460ff19169055600190565b600754815600a165627a7a7230582085e1f2629fdeb6a4115bc827990e497f7a8c87031fce98cbf2e9ae0f936740e00029",
  "deployedBytecode": "0x6080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308af84f081146100ea578063155259911461012257806315a523021461015557806329eae0531461019c57806330ccebb5146101c55780634a9fefc7146101e65780635865c60c14610223578063636f35d3146102445780636fdc202f1461026557806371602692146102865780638da5cb5b146102a757806394a53d41146102bc578063d21cacdf146102d1578063d72d04db146102f2578063eda30c9e14610313578063f202027514610334575b600080fd5b3480156100f657600080fd5b5061010e600160a060020a0360043516602435610349565b604080519115158252519081900360200190f35b34801561012e57600080fd5b50610143600160a060020a0360043516610382565b60408051918252519081900360200190f35b34801561016157600080fd5b50610176600160a060020a03600435166103ac565b60408051600160a060020a03938416815291909216602082015281519081900390910190f35b3480156101a857600080fd5b506101c3600160a060020a03600435811690602435166103db565b005b3480156101d157600080fd5b5061010e600160a060020a036004351661051a565b3480156101f257600080fd5b50610207600160a060020a0360043516610538565b60408051600160a060020a039092168252519081900360200190f35b34801561022f57600080fd5b50610207600160a060020a0360043516610556565b34801561025057600080fd5b50610207600160a060020a0360043516610574565b34801561027157600080fd5b506101c3600160a060020a036004351661058f565b34801561029257600080fd5b50610143600160a060020a03600435166105d5565b3480156102b357600080fd5b506102076105e7565b3480156102c857600080fd5b506101436105f6565b3480156102dd57600080fd5b50610207600160a060020a03600435166105fc565b3480156102fe57600080fd5b5061010e600160a060020a0360043516610617565b34801561031f57600080fd5b5061010e600160a060020a0360043516610658565b34801561034057600080fd5b50610143610695565b60008054600160a060020a0316331461036157600080fd5b50600160a060020a0391909116600090815260036020526040902055600190565b600160a060020a0381166000908152600360205260409020548015156103a757506001545b919050565b600160a060020a0390811660009081526005602090815260408083205460049092529091205490821692911690565b600054600160a060020a031633146103f257600080fd5b600160a060020a03828116600090815260046020526040902054161580156104325750600160a060020a0382811660009081526005602052604090205416155b151561043d57600080fd5b600160a060020a038116600081815260066020526040902080546001908101909155600780549091019055156104ad57600160a060020a038281166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19169183169190911790556104e3565b600160a060020a0382166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916331790555b50600160a060020a03166000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff191633179055565b600160a060020a031660009081526002602052604090205460ff1690565b600160a060020a039081166000908152600460205260409020541690565b600160a060020a039081166000908152600560205260409020541690565b600560205260009081526040902054600160a060020a031681565b600054600160a060020a031633146105a657600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60066020526000908152604090205481565b600054600160a060020a031681565b60015481565b600460205260009081526040902054600160a060020a031681565b60008054600160a060020a0316331461062f57600080fd5b50600160a060020a03166000908152600260205260409020805460ff1916600190811790915590565b60008054600160a060020a0316331461067057600080fd5b50600160a060020a03166000908152600260205260409020805460ff19169055600190565b600754815600a165627a7a7230582085e1f2629fdeb6a4115bc827990e497f7a8c87031fce98cbf2e9ae0f936740e00029",
  "sourceMap": "107:3665:13:-;;;585:10;560:35;;1590:1;1570:21;;187:57;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;219:5:13;:18;;-1:-1:-1;;;;;;219:18:13;227:10;219:18;;;107:3665;;;;;;",
  "deployedSourceMap": "107:3665:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3292:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3292:156:13;-1:-1:-1;;;;;3292:156:13;;;;;;;;;;;;;;;;;;;;;;;;;3574:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3574:195:13;-1:-1:-1;;;;;3574:195:13;;;;;;;;;;;;;;;;;;;;;2425:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2425:163:13;-1:-1:-1;;;;;2425:163:13;;;;;;;;;-1:-1:-1;;;;;2425:163:13;;;;;;;;;;;;;;;;;;;;;;;;1719:453;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1719:453:13;-1:-1:-1;;;;;1719:453:13;;;;;;;;;;;;1301:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1301:110:13;-1:-1:-1;;;;;1301:110:13;;;;;2736:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2736:122:13;-1:-1:-1;;;;;2736:122:13;;;;;;;;;-1:-1:-1;;;;;2736:122:13;;;;;;;;;;;;;;3017;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3017:122:13;-1:-1:-1;;;;;3017:122:13;;;;;1468:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1468:45:13;-1:-1:-1;;;;;1468:45:13;;;;;431:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;431:97:13;-1:-1:-1;;;;;431:97:13;;;;;1519:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1519:45:13;-1:-1:-1;;;;;1519:45:13;;;;;534:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;534:20:13;;;;560:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;560:35:13;;;;1417:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1417:45:13;-1:-1:-1;;;;;1417:45:13;;;;;793:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;793:134:13;-1:-1:-1;;;;;793:134:13;;;;;1046:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1046:135:13;-1:-1:-1;;;;;1046:135:13;;;;;1570:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1570:21:13;;;;3292:156;3376:4;303:5;;-1:-1:-1;;;;;303:5:13;289:10;:19;281:28;;;;;;-1:-1:-1;;;;;;3392:18:13;;;;;;;;:9;:18;;;;;:28;3437:4;;3292:156::o;3574:195::-;-1:-1:-1;;;;;3669:18:13;;3635:12;3669:18;;;:9;:18;;;;;;3701;;3697:66;;;-1:-1:-1;3745:7:13;;3697:66;3574:195;;;:::o;2425:163::-;-1:-1:-1;;;;;2540:19:13;;;2484:17;2540:19;;;:10;:19;;;;;;;;;2561:10;:19;;;;;;;2540;;;;2561;;;2425:163::o;1719:453::-;1814:5;;-1:-1:-1;;;;;1814:5:13;1800:10;:19;1792:28;;;;;;-1:-1:-1;;;;;1838:19:13;;;1869:1;1838:19;;;:10;:19;;;;;;;:33;:70;;;;-1:-1:-1;;;;;;1875:19:13;;;1906:1;1875:19;;;:10;:19;;;;;;;:33;1838:70;1830:79;;;;;;;;-1:-1:-1;;;;;1920:24:13;;;;;;:13;:24;;;;;:26;;;;;;;;;1956:5;:7;;;;;;;1977:23;1973:151;;-1:-1:-1;;;;;2016:19:13;;;;;;;:10;:19;;;;;:31;;-1:-1:-1;;2016:31:13;;;;;;;;;;1973:151;;;-1:-1:-1;;;;;2078:19:13;;;;;;:10;:19;;;;;:32;;-1:-1:-1;;2078:32:13;2100:10;2078:32;;;1973:151;-1:-1:-1;;;;;;2133:19:13;;;;;:10;:19;;;;;:32;;-1:-1:-1;;2133:32:13;2155:10;2133:32;;;1719:453::o;1301:110::-;-1:-1:-1;;;;;1389:15:13;1357:11;1389:15;;;:8;:15;;;;;;;;;1301:110::o;2736:122::-;-1:-1:-1;;;;;2832:19:13;;;2796:17;2832:19;;;:10;:19;;;;;;;;2736:122::o;3017:::-;-1:-1:-1;;;;;3113:19:13;;;3077:17;3113:19;;;:10;:19;;;;;;;;3017:122::o;1468:45::-;;;;;;;;;;;;-1:-1:-1;;;;;1468:45:13;;:::o;431:97::-;303:5;;-1:-1:-1;;;;;303:5:13;289:10;:19;281:28;;;;;;504:5;:17;;-1:-1:-1;;504:17:13;-1:-1:-1;;;;;504:17:13;;;;;;;;;;431:97::o;1519:45::-;;;;;;;;;;;;;:::o;534:20::-;;;-1:-1:-1;;;;;534:20:13;;:::o;560:35::-;;;;:::o;1417:45::-;;;;;;;;;;;;-1:-1:-1;;;;;1417:45:13;;:::o;793:134::-;850:12;303:5;;-1:-1:-1;;;;;303:5:13;289:10;:19;281:28;;;;;;-1:-1:-1;;;;;;874:15:13;;;;;:8;:15;;;;;:22;;-1:-1:-1;;874:22:13;892:4;874:22;;;;;;892:4;793:134::o;1046:135::-;1103:12;303:5;;-1:-1:-1;;;;;303:5:13;289:10;:19;281:28;;;;;;-1:-1:-1;;;;;;1127:15:13;1145:5;1127:15;;;:8;:15;;;;;:23;;-1:-1:-1;;1127:23:13;;;;;1046:135::o;1570:21::-;;;;:::o",
  "source": "pragma solidity ^0.4.23;\n\n/**\n@title Whitelist of games\n@notice contract for managing the list of games\n*/\ncontract Platform {\n    \n    /**\n    @notice constructor of contract\n    */\n    constructor () public {\n        owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        require(msg.sender == owner);\n        _;\n    }\n\n    /**\n    @notice change of ownership\n    @param _newOwner address of new contract owner\n    */\n    function ownerTransfership(address _newOwner) public onlyOwner {\n        owner = _newOwner;\n    }\n\n    address public owner;\n    uint256 public minimal = 1000 ether;\n    mapping (address => bool) gamelist;\n    mapping (address => uint) whitelist;\n\n    /**\n    @notice Set the launch permission\n    @param _game address of the game\n    @return success\n    */\n    function addGame(address _game) public onlyOwner returns(bool success) {\n        gamelist[_game] = true;\n        success = true;\n    }\n\n    /**\n    @notice Delete the launch permission\n    @param _game address of the game\n    @return success\n    */\n    function delGame(address _game) public onlyOwner returns(bool success) {\n        gamelist[_game] = false;\n        success = true;\n    }\n\n    /**\n    @notice Get the launch permission\n    @param _game address of the game\n    @return game status\n    */\n    function getStatus(address _game) external view returns(bool status) {\n        status = gamelist[_game];\n    }\n\n    mapping(address => address) public referrerOf;\n    mapping(address => address) public operatorOf;\n    mapping(address => uint) public referrerCount;\n    uint public users = 0;\n\n\n\n    /**\n    @notice Player registration\n    @param _player Player address\n    @param _referrer Referrer address\n    */\n    function setService(address _player, address _referrer) public {\n        require(msg.sender == owner);\n        require(referrerOf[_player] == address(0) && operatorOf[_player] == address(0)); \n        referrerCount[_referrer]++;\n        users++;\n        if (_referrer != address(0)) {\n            referrerOf[_player] = _referrer;\n        } else {\n            referrerOf[_player] = msg.sender;   \n        }\n        operatorOf[_player] = msg.sender;\n    }\n\n    /** \n    @notice Get address of operator and referrer\n    @param _player Address of player\n    @return {\n      \"_operator\": \"The operator address to receive a reward\",\n      \"_referrer\": \"The referrer address to receive a reward\"\n    }\n    */\n    function getService(address _player) external view returns(address _operator, address _referrer) {\n        return (operatorOf[_player], referrerOf[_player]);\n    }\n\n    /** \n    @notice Get address of referrer\n    @param _player Address of player\n    @return The referrer address to receive a reward\n    */\n    function getReferrer(address _player) external view returns(address _referrer) {\n        return referrerOf[_player];\n    }\n\n    /** \n    @notice Get address of operator (platform)\n    @param _player Address of player\n    @return The operator address to receive a reward\n    */\n    function getOperator(address _player) external view returns(address _operator) {\n        return operatorOf[_player];\n    }\n\n    /**\n    @notice Set the allowed amount\n    @param _player address of the player\n    @param _amount allowable amount\n    @return success\n    */\n    function setAmountForPlayer(address _player, uint _amount) public onlyOwner returns(bool) {\n        whitelist[_player] = _amount;\n        return true;\n    }\n\n    /**\n    @notice Get the allowed amount\n    @param _player address of the player\n    @return allowable amount\n    */\n    function getMaxAmount(address _player) external view returns(uint _amount) {\n        _amount = whitelist[_player];\n        if (_amount == uint(0)) {\n            _amount = minimal;\n        }\n    }\n\n}",
  "sourcePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/platform/Platform.sol",
  "ast": {
    "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/platform/Platform.sol",
    "exportedSymbols": {
      "Platform": [
        2611
      ]
    },
    "id": 2612,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2340,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:13"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Whitelist of games\n@notice contract for managing the list of games",
        "fullyImplemented": true,
        "id": 2611,
        "linearizedBaseContracts": [
          2611
        ],
        "name": "Platform",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2348,
              "nodeType": "Block",
              "src": "209:35:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2343,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2374,
                      "src": "219:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2344,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "227:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "227:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "219:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2347,
                  "nodeType": "ExpressionStatement",
                  "src": "219:18:13"
                }
              ]
            },
            "documentation": "@notice constructor of contract",
            "id": 2349,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "199:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2342,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "209:0:13"
            },
            "scope": 2611,
            "src": "187:57:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2359,
              "nodeType": "Block",
              "src": "271:56:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2352,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "289:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "289:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2354,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2374,
                          "src": "303:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "289:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2351,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "281:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "281:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2357,
                  "nodeType": "ExpressionStatement",
                  "src": "281:28:13"
                },
                {
                  "id": 2358,
                  "nodeType": "PlaceholderStatement",
                  "src": "319:1:13"
                }
              ]
            },
            "documentation": null,
            "id": 2360,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2350,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "268:2:13"
            },
            "src": "250:77:13",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2371,
              "nodeType": "Block",
              "src": "494:34:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2367,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2374,
                      "src": "504:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2368,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2362,
                      "src": "512:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "504:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2370,
                  "nodeType": "ExpressionStatement",
                  "src": "504:17:13"
                }
              ]
            },
            "documentation": "@notice change of ownership\n@param _newOwner address of new contract owner",
            "id": 2372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2365,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2364,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "484:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "484:9:13"
              }
            ],
            "name": "ownerTransfership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2362,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2372,
                  "src": "458:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "458:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "457:19:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "494:0:13"
            },
            "scope": 2611,
            "src": "431:97:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2374,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "534:20:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2373,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "534:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2377,
            "name": "minimal",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "560:35:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2375,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "560:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31303030",
              "id": 2376,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "585:10:13",
              "subdenomination": "ether",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000"
              },
              "value": "1000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2381,
            "name": "gamelist",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "601:34:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2380,
              "keyType": {
                "id": 2378,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "610:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "601:25:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2379,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "621:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2385,
            "name": "whitelist",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "641:35:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2384,
              "keyType": {
                "id": 2382,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "650:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "641:25:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2383,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "661:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2404,
              "nodeType": "Block",
              "src": "864:63:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2394,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "874:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2396,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2395,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2387,
                        "src": "883:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "874:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2397,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "892:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "874:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2399,
                  "nodeType": "ExpressionStatement",
                  "src": "874:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2400,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2392,
                      "src": "906:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "916:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "906:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2403,
                  "nodeType": "ExpressionStatement",
                  "src": "906:14:13"
                }
              ]
            },
            "documentation": "@notice Set the launch permission\n@param _game address of the game\n@return success",
            "id": 2405,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2390,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2389,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "832:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "832:9:13"
              }
            ],
            "name": "addGame",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2405,
                  "src": "810:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "810:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "809:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2393,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2392,
                  "name": "success",
                  "nodeType": "VariableDeclaration",
                  "scope": 2405,
                  "src": "850:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2391,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "849:14:13"
            },
            "scope": 2611,
            "src": "793:134:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2424,
              "nodeType": "Block",
              "src": "1117:64:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2414,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "1127:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2416,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2415,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2407,
                        "src": "1136:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1127:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1145:5:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1127:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2419,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2420,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2412,
                      "src": "1160:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1170:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1160:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2423,
                  "nodeType": "ExpressionStatement",
                  "src": "1160:14:13"
                }
              ]
            },
            "documentation": "@notice Delete the launch permission\n@param _game address of the game\n@return success",
            "id": 2425,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2410,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2409,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "1085:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1085:9:13"
              }
            ],
            "name": "delGame",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2407,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2425,
                  "src": "1063:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1063:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1062:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2412,
                  "name": "success",
                  "nodeType": "VariableDeclaration",
                  "scope": 2425,
                  "src": "1103:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2411,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:14:13"
            },
            "scope": 2611,
            "src": "1046:135:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2438,
              "nodeType": "Block",
              "src": "1370:41:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2432,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2430,
                      "src": "1380:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "1389:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2435,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2427,
                        "src": "1398:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1389:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1380:24:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2437,
                  "nodeType": "ExpressionStatement",
                  "src": "1380:24:13"
                }
              ]
            },
            "documentation": "@notice Get the launch permission\n@param _game address of the game\n@return game status",
            "id": 2439,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2427,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2439,
                  "src": "1320:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1320:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1319:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2430,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2439,
                  "src": "1357:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2429,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1356:13:13"
            },
            "scope": 2611,
            "src": "1301:110:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 2443,
            "name": "referrerOf",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1417:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2442,
              "keyType": {
                "id": 2440,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1425:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1417:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2441,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1436:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "operatorOf",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1468:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2446,
              "keyType": {
                "id": 2444,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1476:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1468:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2445,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1487:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "referrerCount",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1519:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2450,
              "keyType": {
                "id": 2448,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1527:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1519:24:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2449,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "1538:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2454,
            "name": "users",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1570:21:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2452,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1570:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 2453,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1590:1:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2522,
              "nodeType": "Block",
              "src": "1782:390:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2462,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "1800:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1800:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2464,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2374,
                          "src": "1814:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1800:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2461,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "1792:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1792:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2467,
                  "nodeType": "ExpressionStatement",
                  "src": "1792:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2469,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "1838:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2471,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2470,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "1849:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1838:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1869:1:13",
                                "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": 2472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1861:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1861:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1838:33:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "operatorOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "1875:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2478,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2477,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "1886:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1875:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1906:1:13",
                                "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": 2479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1898:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1898:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1875:33:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1838:70:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2468,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "1830:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1830:79:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2485,
                  "nodeType": "ExpressionStatement",
                  "src": "1830:79:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "1920:26:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2486,
                        "name": "referrerCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "1920:13:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2488,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2487,
                        "name": "_referrer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "1934:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1920:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2490,
                  "nodeType": "ExpressionStatement",
                  "src": "1920:26:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "1956:7:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 2491,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2454,
                      "src": "1956:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2493,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:7:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2494,
                      "name": "_referrer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2458,
                      "src": "1977:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1998:1:13",
                          "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": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1990:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1990:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1977:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2513,
                    "nodeType": "Block",
                    "src": "2064:60:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2506,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "2078:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2508,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2507,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "2089:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2078:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2509,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "2100:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2100:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2078:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2512,
                        "nodeType": "ExpressionStatement",
                        "src": "2078:32:13"
                      }
                    ]
                  },
                  "id": 2514,
                  "nodeType": "IfStatement",
                  "src": "1973:151:13",
                  "trueBody": {
                    "id": 2505,
                    "nodeType": "Block",
                    "src": "2002:56:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2499,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "2016:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2501,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2500,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "2027:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2016:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2502,
                            "name": "_referrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "2038:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2016:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2504,
                        "nodeType": "ExpressionStatement",
                        "src": "2016:31:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2515,
                        "name": "operatorOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "2133:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 2517,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2456,
                        "src": "2144:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2133:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2518,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "2155:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2155:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2133:32:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2521,
                  "nodeType": "ExpressionStatement",
                  "src": "2133:32:13"
                }
              ]
            },
            "documentation": "@notice Player registration\n@param _player Player address\n@param _referrer Referrer address",
            "id": 2523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2456,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2523,
                  "src": "1739:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2455,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2458,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2523,
                  "src": "1756:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1738:36:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2460,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1782:0:13"
            },
            "scope": 2611,
            "src": "1719:453:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2540,
              "nodeType": "Block",
              "src": "2522:66:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2532,
                          "name": "operatorOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2447,
                          "src": "2540:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 2534,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2533,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2525,
                          "src": "2551:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2540:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2535,
                          "name": "referrerOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2443,
                          "src": "2561:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 2537,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2536,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2525,
                          "src": "2572:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2561:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 2538,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2539:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 2531,
                  "id": 2539,
                  "nodeType": "Return",
                  "src": "2532:49:13"
                }
              ]
            },
            "documentation": "@notice Get address of operator and referrer\n@param _player Address of player\n@return {\n\"_operator\": \"The operator address to receive a reward\",\n\"_referrer\": \"The referrer address to receive a reward\"\n}",
            "id": 2541,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2525,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2445:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2524,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2445:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2444:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2528,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2484:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2484:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2530,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2503:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2503:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2483:38:13"
            },
            "scope": 2611,
            "src": "2425:163:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2552,
              "nodeType": "Block",
              "src": "2815:43:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "referrerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "2832:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2550,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2549,
                      "name": "_player",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2543,
                      "src": "2843:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2832:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2547,
                  "id": 2551,
                  "nodeType": "Return",
                  "src": "2825:26:13"
                }
              ]
            },
            "documentation": "@notice Get address of referrer\n@param _player Address of player\n@return The referrer address to receive a reward",
            "id": 2553,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getReferrer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2543,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2553,
                  "src": "2757:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2757:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2756:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2546,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2553,
                  "src": "2796:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2545,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2796:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2795:19:13"
            },
            "scope": 2611,
            "src": "2736:122:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2564,
              "nodeType": "Block",
              "src": "3096:43:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2560,
                      "name": "operatorOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2447,
                      "src": "3113:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2562,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2561,
                      "name": "_player",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2555,
                      "src": "3124:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3113:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2559,
                  "id": 2563,
                  "nodeType": "Return",
                  "src": "3106:26:13"
                }
              ]
            },
            "documentation": "@notice Get address of operator (platform)\n@param _player Address of player\n@return The operator address to receive a reward",
            "id": 2565,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOperator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2555,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2565,
                  "src": "3038:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2554,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3038:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3037:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2558,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2565,
                  "src": "3077:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3077:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3076:19:13"
            },
            "scope": 2611,
            "src": "3017:122:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2584,
              "nodeType": "Block",
              "src": "3382:66:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2385,
                        "src": "3392:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2578,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2577,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2567,
                        "src": "3402:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3392:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2579,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2569,
                      "src": "3413:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3392:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2581,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3437:4:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2575,
                  "id": 2583,
                  "nodeType": "Return",
                  "src": "3430:11:13"
                }
              ]
            },
            "documentation": "@notice Set the allowed amount\n@param _player address of the player\n@param _amount allowable amount\n@return success",
            "id": 2585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2571,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "3358:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3358:9:13"
              }
            ],
            "name": "setAmountForPlayer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2567,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3320:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2566,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3320:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2569,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3337:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2568,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3319:31:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2574,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3376:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2573,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3376:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3375:6:13"
            },
            "scope": 2611,
            "src": "3292:156:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2609,
              "nodeType": "Block",
              "src": "3649:120:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2592,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "3659:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2593,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2385,
                        "src": "3669:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2595,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2594,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2587,
                        "src": "3679:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3669:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3659:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2597,
                  "nodeType": "ExpressionStatement",
                  "src": "3659:28:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "3701:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3717:1:13",
                          "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": 2599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3712:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint"
                      },
                      "id": 2601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3712:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3701:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2608,
                  "nodeType": "IfStatement",
                  "src": "3697:66:13",
                  "trueBody": {
                    "id": 2607,
                    "nodeType": "Block",
                    "src": "3721:42:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2603,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2590,
                            "src": "3735:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "minimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2377,
                            "src": "3745:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3735:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2606,
                        "nodeType": "ExpressionStatement",
                        "src": "3735:17:13"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Get the allowed amount\n@param _player address of the player\n@return allowable amount",
            "id": 2610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMaxAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2587,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2610,
                  "src": "3596:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2586,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3596:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3595:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2590,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2610,
                  "src": "3635:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3635:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3634:14:13"
            },
            "scope": 2611,
            "src": "3574:195:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2612,
        "src": "107:3665:13"
      }
    ],
    "src": "0:3772:13"
  },
  "legacyAST": {
    "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/platform/Platform.sol",
    "exportedSymbols": {
      "Platform": [
        2611
      ]
    },
    "id": 2612,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2340,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:13"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Whitelist of games\n@notice contract for managing the list of games",
        "fullyImplemented": true,
        "id": 2611,
        "linearizedBaseContracts": [
          2611
        ],
        "name": "Platform",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2348,
              "nodeType": "Block",
              "src": "209:35:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2343,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2374,
                      "src": "219:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2344,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "227:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "227:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "219:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2347,
                  "nodeType": "ExpressionStatement",
                  "src": "219:18:13"
                }
              ]
            },
            "documentation": "@notice constructor of contract",
            "id": 2349,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "199:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2342,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "209:0:13"
            },
            "scope": 2611,
            "src": "187:57:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2359,
              "nodeType": "Block",
              "src": "271:56:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2352,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "289:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "289:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2354,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2374,
                          "src": "303:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "289:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2351,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "281:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "281:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2357,
                  "nodeType": "ExpressionStatement",
                  "src": "281:28:13"
                },
                {
                  "id": 2358,
                  "nodeType": "PlaceholderStatement",
                  "src": "319:1:13"
                }
              ]
            },
            "documentation": null,
            "id": 2360,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2350,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "268:2:13"
            },
            "src": "250:77:13",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2371,
              "nodeType": "Block",
              "src": "494:34:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2367,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2374,
                      "src": "504:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2368,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2362,
                      "src": "512:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "504:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2370,
                  "nodeType": "ExpressionStatement",
                  "src": "504:17:13"
                }
              ]
            },
            "documentation": "@notice change of ownership\n@param _newOwner address of new contract owner",
            "id": 2372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2365,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2364,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "484:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "484:9:13"
              }
            ],
            "name": "ownerTransfership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2362,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2372,
                  "src": "458:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "458:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "457:19:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "494:0:13"
            },
            "scope": 2611,
            "src": "431:97:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2374,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "534:20:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2373,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "534:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2377,
            "name": "minimal",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "560:35:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2375,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "560:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31303030",
              "id": 2376,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "585:10:13",
              "subdenomination": "ether",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000"
              },
              "value": "1000"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2381,
            "name": "gamelist",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "601:34:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2380,
              "keyType": {
                "id": 2378,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "610:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "601:25:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2379,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "621:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2385,
            "name": "whitelist",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "641:35:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2384,
              "keyType": {
                "id": 2382,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "650:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "641:25:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2383,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "661:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2404,
              "nodeType": "Block",
              "src": "864:63:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2394,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "874:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2396,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2395,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2387,
                        "src": "883:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "874:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2397,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "892:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "874:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2399,
                  "nodeType": "ExpressionStatement",
                  "src": "874:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2400,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2392,
                      "src": "906:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "916:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "906:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2403,
                  "nodeType": "ExpressionStatement",
                  "src": "906:14:13"
                }
              ]
            },
            "documentation": "@notice Set the launch permission\n@param _game address of the game\n@return success",
            "id": 2405,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2390,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2389,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "832:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "832:9:13"
              }
            ],
            "name": "addGame",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2405,
                  "src": "810:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "810:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "809:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2393,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2392,
                  "name": "success",
                  "nodeType": "VariableDeclaration",
                  "scope": 2405,
                  "src": "850:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2391,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "849:14:13"
            },
            "scope": 2611,
            "src": "793:134:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2424,
              "nodeType": "Block",
              "src": "1117:64:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2414,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "1127:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2416,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2415,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2407,
                        "src": "1136:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1127:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1145:5:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1127:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2419,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2420,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2412,
                      "src": "1160:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1170:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1160:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2423,
                  "nodeType": "ExpressionStatement",
                  "src": "1160:14:13"
                }
              ]
            },
            "documentation": "@notice Delete the launch permission\n@param _game address of the game\n@return success",
            "id": 2425,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2410,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2409,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "1085:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1085:9:13"
              }
            ],
            "name": "delGame",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2407,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2425,
                  "src": "1063:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1063:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1062:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2412,
                  "name": "success",
                  "nodeType": "VariableDeclaration",
                  "scope": 2425,
                  "src": "1103:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2411,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:14:13"
            },
            "scope": 2611,
            "src": "1046:135:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2438,
              "nodeType": "Block",
              "src": "1370:41:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2432,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2430,
                      "src": "1380:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "gamelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2381,
                        "src": "1389:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2435,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "_game",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2427,
                        "src": "1398:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1389:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1380:24:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2437,
                  "nodeType": "ExpressionStatement",
                  "src": "1380:24:13"
                }
              ]
            },
            "documentation": "@notice Get the launch permission\n@param _game address of the game\n@return game status",
            "id": 2439,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2427,
                  "name": "_game",
                  "nodeType": "VariableDeclaration",
                  "scope": 2439,
                  "src": "1320:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1320:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1319:15:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2430,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2439,
                  "src": "1357:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2429,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1356:13:13"
            },
            "scope": 2611,
            "src": "1301:110:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 2443,
            "name": "referrerOf",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1417:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2442,
              "keyType": {
                "id": 2440,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1425:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1417:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2441,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1436:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "operatorOf",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1468:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2446,
              "keyType": {
                "id": 2444,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1476:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1468:27:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2445,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1487:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "referrerCount",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1519:45:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2450,
              "keyType": {
                "id": 2448,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1527:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1519:24:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2449,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "1538:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2454,
            "name": "users",
            "nodeType": "VariableDeclaration",
            "scope": 2611,
            "src": "1570:21:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2452,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1570:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 2453,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1590:1:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2522,
              "nodeType": "Block",
              "src": "1782:390:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2462,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "1800:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1800:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2464,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2374,
                          "src": "1814:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1800:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2461,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "1792:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1792:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2467,
                  "nodeType": "ExpressionStatement",
                  "src": "1792:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2469,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "1838:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2471,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2470,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "1849:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1838:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1869:1:13",
                                "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": 2472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1861:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1861:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1838:33:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "operatorOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "1875:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2478,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2477,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "1886:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1875:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1906:1:13",
                                "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": 2479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1898:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1898:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1875:33:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1838:70:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2468,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3280,
                      "src": "1830:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1830:79:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2485,
                  "nodeType": "ExpressionStatement",
                  "src": "1830:79:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "1920:26:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2486,
                        "name": "referrerCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "1920:13:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2488,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2487,
                        "name": "_referrer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "1934:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1920:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2490,
                  "nodeType": "ExpressionStatement",
                  "src": "1920:26:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "1956:7:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 2491,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2454,
                      "src": "1956:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2493,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:7:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2494,
                      "name": "_referrer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2458,
                      "src": "1977:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1998:1:13",
                          "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": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1990:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1990:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1977:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2513,
                    "nodeType": "Block",
                    "src": "2064:60:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2506,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "2078:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2508,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2507,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "2089:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2078:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2509,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "2100:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2100:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2078:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2512,
                        "nodeType": "ExpressionStatement",
                        "src": "2078:32:13"
                      }
                    ]
                  },
                  "id": 2514,
                  "nodeType": "IfStatement",
                  "src": "1973:151:13",
                  "trueBody": {
                    "id": 2505,
                    "nodeType": "Block",
                    "src": "2002:56:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2499,
                              "name": "referrerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "2016:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2501,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2500,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "2027:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2016:19:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2502,
                            "name": "_referrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "2038:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2016:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2504,
                        "nodeType": "ExpressionStatement",
                        "src": "2016:31:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2515,
                        "name": "operatorOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "2133:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 2517,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2456,
                        "src": "2144:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2133:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2518,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "2155:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2155:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2133:32:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2521,
                  "nodeType": "ExpressionStatement",
                  "src": "2133:32:13"
                }
              ]
            },
            "documentation": "@notice Player registration\n@param _player Player address\n@param _referrer Referrer address",
            "id": 2523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2456,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2523,
                  "src": "1739:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2455,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2458,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2523,
                  "src": "1756:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1738:36:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2460,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1782:0:13"
            },
            "scope": 2611,
            "src": "1719:453:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2540,
              "nodeType": "Block",
              "src": "2522:66:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2532,
                          "name": "operatorOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2447,
                          "src": "2540:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 2534,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2533,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2525,
                          "src": "2551:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2540:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2535,
                          "name": "referrerOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2443,
                          "src": "2561:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 2537,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2536,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2525,
                          "src": "2572:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2561:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 2538,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2539:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 2531,
                  "id": 2539,
                  "nodeType": "Return",
                  "src": "2532:49:13"
                }
              ]
            },
            "documentation": "@notice Get address of operator and referrer\n@param _player Address of player\n@return {\n\"_operator\": \"The operator address to receive a reward\",\n\"_referrer\": \"The referrer address to receive a reward\"\n}",
            "id": 2541,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2525,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2445:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2524,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2445:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2444:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2528,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2484:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2484:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2530,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2541,
                  "src": "2503:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2503:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2483:38:13"
            },
            "scope": 2611,
            "src": "2425:163:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2552,
              "nodeType": "Block",
              "src": "2815:43:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "referrerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "2832:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2550,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2549,
                      "name": "_player",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2543,
                      "src": "2843:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2832:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2547,
                  "id": 2551,
                  "nodeType": "Return",
                  "src": "2825:26:13"
                }
              ]
            },
            "documentation": "@notice Get address of referrer\n@param _player Address of player\n@return The referrer address to receive a reward",
            "id": 2553,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getReferrer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2543,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2553,
                  "src": "2757:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2757:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2756:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2546,
                  "name": "_referrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2553,
                  "src": "2796:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2545,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2796:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2795:19:13"
            },
            "scope": 2611,
            "src": "2736:122:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2564,
              "nodeType": "Block",
              "src": "3096:43:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2560,
                      "name": "operatorOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2447,
                      "src": "3113:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2562,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2561,
                      "name": "_player",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2555,
                      "src": "3124:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3113:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2559,
                  "id": 2563,
                  "nodeType": "Return",
                  "src": "3106:26:13"
                }
              ]
            },
            "documentation": "@notice Get address of operator (platform)\n@param _player Address of player\n@return The operator address to receive a reward",
            "id": 2565,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOperator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2555,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2565,
                  "src": "3038:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2554,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3038:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3037:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2558,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2565,
                  "src": "3077:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3077:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3076:19:13"
            },
            "scope": 2611,
            "src": "3017:122:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2584,
              "nodeType": "Block",
              "src": "3382:66:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2385,
                        "src": "3392:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2578,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2577,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2567,
                        "src": "3402:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3392:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2579,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2569,
                      "src": "3413:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3392:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2581,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3437:4:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2575,
                  "id": 2583,
                  "nodeType": "Return",
                  "src": "3430:11:13"
                }
              ]
            },
            "documentation": "@notice Set the allowed amount\n@param _player address of the player\n@param _amount allowable amount\n@return success",
            "id": 2585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2572,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2571,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2360,
                  "src": "3358:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3358:9:13"
              }
            ],
            "name": "setAmountForPlayer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2567,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3320:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2566,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3320:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2569,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3337:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2568,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3319:31:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2574,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2585,
                  "src": "3376:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2573,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3376:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3375:6:13"
            },
            "scope": 2611,
            "src": "3292:156:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2609,
              "nodeType": "Block",
              "src": "3649:120:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2592,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "3659:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2593,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2385,
                        "src": "3669:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2595,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2594,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2587,
                        "src": "3679:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3669:18:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3659:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2597,
                  "nodeType": "ExpressionStatement",
                  "src": "3659:28:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "3701:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3717:1:13",
                          "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": 2599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3712:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint"
                      },
                      "id": 2601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3712:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3701:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2608,
                  "nodeType": "IfStatement",
                  "src": "3697:66:13",
                  "trueBody": {
                    "id": 2607,
                    "nodeType": "Block",
                    "src": "3721:42:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2603,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2590,
                            "src": "3735:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "minimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2377,
                            "src": "3745:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3735:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2606,
                        "nodeType": "ExpressionStatement",
                        "src": "3735:17:13"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Get the allowed amount\n@param _player address of the player\n@return allowable amount",
            "id": 2610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMaxAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2587,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 2610,
                  "src": "3596:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2586,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3596:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3595:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2590,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2610,
                  "src": "3635:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3635:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3634:14:13"
            },
            "scope": 2611,
            "src": "3574:195:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2612,
        "src": "107:3665:13"
      }
    ],
    "src": "0:3772:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "1543924054456": {
      "events": {},
      "links": {},
      "address": "0x345cA3e014Aaf5dcA488057592ee47305D9B3e10",
      "transactionHash": "0x2e2570911f3bb9474ec439c6aa08569a11ab2af3fde9f74bc64a0e4973cbf7eb"
    }
  },
  "schemaVersion": "3.0.0-beta.0",
  "updatedAt": "2018-12-04T11:48:20.879Z"
}