{
  "contractName": "ControllerInterface",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "unregisterScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getSchemeParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newController",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "upgradeController",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "removeGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "bytes32[]"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "genericAction",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amountInWei",
          "type": "uint256"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "sendEther",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "mintTokens",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenIncreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "unregisterSelf",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "int256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "globalConstraintsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getSchemePermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "isSchemeRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenDecreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_params",
          "type": "bytes32"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "addGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "registerScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "isGlobalConstraintRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenTransferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.4.18;\n\nimport \"./Avatar.sol\";\nimport \"./Reputation.sol\";\nimport \"./DAOToken.sol\";\nimport \"../globalConstraints/GlobalConstraintInterface.sol\";\n\n/**\n * @title Controller contract\n * @dev A controller controls the organizations tokens ,reputation and avatar.\n * It is subject to a set of schemes and constraints that determine its behavior.\n * Each scheme has it own parameters and operation permissions.\n */\ninterface ControllerInterface {\n\n    /**\n     * @dev mint reputation .\n     * @param  _amount amount of reputation to mint\n     * @param _beneficiary beneficiary address\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function mintReputation(int256 _amount, address _beneficiary,address _avatar)\n    public\n    returns(bool);\n\n    /**\n     * @dev mint tokens .\n     * @param  _amount amount of token to mint\n     * @param _beneficiary beneficiary address\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function mintTokens(uint256 _amount, address _beneficiary,address _avatar)\n    public\n    returns(bool);\n\n  /**\n   * @dev register or update a scheme\n   * @param _scheme the address of the scheme\n   * @param _paramsHash a hashed configuration of the usage of the scheme\n   * @param _permissions the permissions the new scheme will have\n   * @param _avatar address\n   * @return bool which represents a success\n   */\n    function registerScheme(address _scheme, bytes32 _paramsHash, bytes4 _permissions,address _avatar)\n    public\n    returns(bool);\n\n    /**\n     * @dev unregister a scheme\n     * @param _avatar address\n     * @param _scheme the address of the scheme\n     * @return bool which represents a success\n     */\n    function unregisterScheme(address _scheme,address _avatar)\n    public\n    returns(bool);\n    /**\n     * @dev unregister the caller's scheme\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function unregisterSelf(address _avatar) public returns(bool);\n\n    function isSchemeRegistered( address _scheme,address _avatar) public constant returns(bool);\n\n    function getSchemeParameters(address _scheme,address _avatar) public constant returns(bytes32);\n\n    function getSchemePermissions(address _scheme,address _avatar) public constant returns(bytes4);\n\n  // Global Contraints:\n    function globalConstraintsCount(address _avatar) public constant returns(uint);\n\n    function isGlobalConstraintRegistered(address _globalConstraint,address _avatar) public constant returns(bool);\n\n    /**\n     * @dev add or update Global Constraint\n     * @param _globalConstraint the address of the global constraint to be added.\n     * @param _params the constraint parameters hash.\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function addGlobalConstraint(address _globalConstraint, bytes32 _params,address _avatar)\n    public returns(bool);\n\n    /**\n     * @dev remove Global Constraint\n     * @param _globalConstraint the address of the global constraint to be remove.\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function removeGlobalConstraint (address _globalConstraint,address _avatar)\n    public  returns(bool);\n\n  /**\n    * @dev upgrade the Controller\n    *      The function will trigger an event 'UpgradeController'.\n    * @param  _newController the address of the new controller.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function upgradeController(address _newController,address _avatar)\n    public returns(bool);\n    /**\n    * @dev do a generic delegate call to the contract which called us.\n    * This function use delegatecall and might expose the organization to security\n    * risk. Use this function only if you really knows what you are doing.\n    * @param _params the params for the call.\n    * @param _avatar address\n    * @return bool which represents success\n    */\n    function genericAction(bytes32[] _params,address _avatar)\n    public\n    returns(bool);\n  /**\n   * @dev send some ether\n   * @param _amountInWei the amount of ether (in Wei) to send\n   * @param _to address of the beneficiary\n   * @param _avatar address\n   * @return bool which represents a success\n   */\n    function sendEther(uint _amountInWei, address _to,address _avatar)\n    public returns(bool);\n\n    /**\n    * @dev send some amount of arbitrary ERC20 Tokens\n    * @param _externalToken the address of the Token Contract\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenTransfer(StandardToken _externalToken, address _to, uint _value,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev transfer token \"from\" address \"to\" address\n    *      One must to approve the amount of tokens which can be spend from the\n    *      \"from\" account.This can be done using externalTokenApprove.\n    * @param _externalToken the address of the Token Contract\n    * @param _from address of the account to send from\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenTransferFrom(StandardToken _externalToken, address _from, address _to, uint _value,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev increase approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _addedValue the amount of ether (in Wei) which the approval is referring to.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenIncreaseApproval(StandardToken _externalToken, address _spender, uint _addedValue,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev decrease approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _subtractedValue the amount of ether (in Wei) which the approval is referring to.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenDecreaseApproval(StandardToken _externalToken, address _spender, uint _subtractedValue,address _avatar)\n    public\n    returns(bool);\n}\n",
  "sourcePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/controller/ControllerInterface.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/controller/ControllerInterface.sol",
      "exportedSymbols": {
        "ControllerInterface": [
          4364
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 4161,
        "name": "PragmaDirective",
        "src": "0:24:7"
      },
      {
        "attributes": {
          "SourceUnit": 3066,
          "absolutePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/controller/Avatar.sol",
          "file": "./Avatar.sol",
          "scope": 4365,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4162,
        "name": "ImportDirective",
        "src": "26:22:7"
      },
      {
        "attributes": {
          "SourceUnit": 4545,
          "absolutePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/controller/Reputation.sol",
          "file": "./Reputation.sol",
          "scope": 4365,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4163,
        "name": "ImportDirective",
        "src": "49:26:7"
      },
      {
        "attributes": {
          "SourceUnit": 4400,
          "absolutePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/controller/DAOToken.sol",
          "file": "./DAOToken.sol",
          "scope": 4365,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4164,
        "name": "ImportDirective",
        "src": "76:24:7"
      },
      {
        "attributes": {
          "SourceUnit": 5891,
          "absolutePath": "/home/travis/build/dev-matan-tsuberi/daostack/contracts/globalConstraints/GlobalConstraintInterface.sol",
          "file": "../globalConstraints/GlobalConstraintInterface.sol",
          "scope": 4365,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4165,
        "name": "ImportDirective",
        "src": "101:60:7"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "documentation": "@title Controller contract\n@dev A controller controls the organizations tokens ,reputation and avatar.\nIt is subject to a set of schemes and constraints that determine its behavior.\nEach scheme has it own parameters and operation permissions.",
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            4364
          ],
          "name": "ControllerInterface",
          "scope": 4365
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "mintReputation",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4176,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 4166,
                        "name": "ElementaryTypeName",
                        "src": "709:6:7"
                      }
                    ],
                    "id": 4167,
                    "name": "VariableDeclaration",
                    "src": "709:14:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4176,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4168,
                        "name": "ElementaryTypeName",
                        "src": "725:7:7"
                      }
                    ],
                    "id": 4169,
                    "name": "VariableDeclaration",
                    "src": "725:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4176,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4170,
                        "name": "ElementaryTypeName",
                        "src": "746:7:7"
                      }
                    ],
                    "id": 4171,
                    "name": "VariableDeclaration",
                    "src": "746:15:7"
                  }
                ],
                "id": 4172,
                "name": "ParameterList",
                "src": "708:54:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4176,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4173,
                        "name": "ElementaryTypeName",
                        "src": "786:4:7"
                      }
                    ],
                    "id": 4174,
                    "name": "VariableDeclaration",
                    "src": "786:4:7"
                  }
                ],
                "id": 4175,
                "name": "ParameterList",
                "src": "785:6:7"
              }
            ],
            "id": 4176,
            "name": "FunctionDefinition",
            "src": "685:107:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "mintTokens",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4177,
                        "name": "ElementaryTypeName",
                        "src": "1031:7:7"
                      }
                    ],
                    "id": 4178,
                    "name": "VariableDeclaration",
                    "src": "1031:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4179,
                        "name": "ElementaryTypeName",
                        "src": "1048:7:7"
                      }
                    ],
                    "id": 4180,
                    "name": "VariableDeclaration",
                    "src": "1048:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4181,
                        "name": "ElementaryTypeName",
                        "src": "1069:7:7"
                      }
                    ],
                    "id": 4182,
                    "name": "VariableDeclaration",
                    "src": "1069:15:7"
                  }
                ],
                "id": 4183,
                "name": "ParameterList",
                "src": "1030:55:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4184,
                        "name": "ElementaryTypeName",
                        "src": "1109:4:7"
                      }
                    ],
                    "id": 4185,
                    "name": "VariableDeclaration",
                    "src": "1109:4:7"
                  }
                ],
                "id": 4186,
                "name": "ParameterList",
                "src": "1108:6:7"
              }
            ],
            "id": 4187,
            "name": "FunctionDefinition",
            "src": "1011:104:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "registerScheme",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4188,
                        "name": "ElementaryTypeName",
                        "src": "1454:7:7"
                      }
                    ],
                    "id": 4189,
                    "name": "VariableDeclaration",
                    "src": "1454:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_paramsHash",
                      "scope": 4200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4190,
                        "name": "ElementaryTypeName",
                        "src": "1471:7:7"
                      }
                    ],
                    "id": 4191,
                    "name": "VariableDeclaration",
                    "src": "1471:19:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_permissions",
                      "scope": 4200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 4192,
                        "name": "ElementaryTypeName",
                        "src": "1492:6:7"
                      }
                    ],
                    "id": 4193,
                    "name": "VariableDeclaration",
                    "src": "1492:19:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4194,
                        "name": "ElementaryTypeName",
                        "src": "1512:7:7"
                      }
                    ],
                    "id": 4195,
                    "name": "VariableDeclaration",
                    "src": "1512:15:7"
                  }
                ],
                "id": 4196,
                "name": "ParameterList",
                "src": "1453:75:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4197,
                        "name": "ElementaryTypeName",
                        "src": "1552:4:7"
                      }
                    ],
                    "id": 4198,
                    "name": "VariableDeclaration",
                    "src": "1552:4:7"
                  }
                ],
                "id": 4199,
                "name": "ParameterList",
                "src": "1551:6:7"
              }
            ],
            "id": 4200,
            "name": "FunctionDefinition",
            "src": "1430:128:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "unregisterScheme",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4201,
                        "name": "ElementaryTypeName",
                        "src": "1763:7:7"
                      }
                    ],
                    "id": 4202,
                    "name": "VariableDeclaration",
                    "src": "1763:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4203,
                        "name": "ElementaryTypeName",
                        "src": "1779:7:7"
                      }
                    ],
                    "id": 4204,
                    "name": "VariableDeclaration",
                    "src": "1779:15:7"
                  }
                ],
                "id": 4205,
                "name": "ParameterList",
                "src": "1762:33:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4206,
                        "name": "ElementaryTypeName",
                        "src": "1819:4:7"
                      }
                    ],
                    "id": 4207,
                    "name": "VariableDeclaration",
                    "src": "1819:4:7"
                  }
                ],
                "id": 4208,
                "name": "ParameterList",
                "src": "1818:6:7"
              }
            ],
            "id": 4209,
            "name": "FunctionDefinition",
            "src": "1737:88:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "unregisterSelf",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4216,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4210,
                        "name": "ElementaryTypeName",
                        "src": "1990:7:7"
                      }
                    ],
                    "id": 4211,
                    "name": "VariableDeclaration",
                    "src": "1990:15:7"
                  }
                ],
                "id": 4212,
                "name": "ParameterList",
                "src": "1989:17:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4216,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4213,
                        "name": "ElementaryTypeName",
                        "src": "2022:4:7"
                      }
                    ],
                    "id": 4214,
                    "name": "VariableDeclaration",
                    "src": "2022:4:7"
                  }
                ],
                "id": 4215,
                "name": "ParameterList",
                "src": "2021:6:7"
              }
            ],
            "id": 4216,
            "name": "FunctionDefinition",
            "src": "1966:62:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isSchemeRegistered",
              "payable": false,
              "scope": 4364,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4217,
                        "name": "ElementaryTypeName",
                        "src": "2063:7:7"
                      }
                    ],
                    "id": 4218,
                    "name": "VariableDeclaration",
                    "src": "2063:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4219,
                        "name": "ElementaryTypeName",
                        "src": "2079:7:7"
                      }
                    ],
                    "id": 4220,
                    "name": "VariableDeclaration",
                    "src": "2079:15:7"
                  }
                ],
                "id": 4221,
                "name": "ParameterList",
                "src": "2061:34:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4222,
                        "name": "ElementaryTypeName",
                        "src": "2120:4:7"
                      }
                    ],
                    "id": 4223,
                    "name": "VariableDeclaration",
                    "src": "2120:4:7"
                  }
                ],
                "id": 4224,
                "name": "ParameterList",
                "src": "2119:6:7"
              }
            ],
            "id": 4225,
            "name": "FunctionDefinition",
            "src": "2034:92:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemeParameters",
              "payable": false,
              "scope": 4364,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4234,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4226,
                        "name": "ElementaryTypeName",
                        "src": "2161:7:7"
                      }
                    ],
                    "id": 4227,
                    "name": "VariableDeclaration",
                    "src": "2161:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4234,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4228,
                        "name": "ElementaryTypeName",
                        "src": "2177:7:7"
                      }
                    ],
                    "id": 4229,
                    "name": "VariableDeclaration",
                    "src": "2177:15:7"
                  }
                ],
                "id": 4230,
                "name": "ParameterList",
                "src": "2160:33:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4234,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4231,
                        "name": "ElementaryTypeName",
                        "src": "2218:7:7"
                      }
                    ],
                    "id": 4232,
                    "name": "VariableDeclaration",
                    "src": "2218:7:7"
                  }
                ],
                "id": 4233,
                "name": "ParameterList",
                "src": "2217:9:7"
              }
            ],
            "id": 4234,
            "name": "FunctionDefinition",
            "src": "2132:95:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemePermissions",
              "payable": false,
              "scope": 4364,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 4243,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4235,
                        "name": "ElementaryTypeName",
                        "src": "2263:7:7"
                      }
                    ],
                    "id": 4236,
                    "name": "VariableDeclaration",
                    "src": "2263:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4243,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4237,
                        "name": "ElementaryTypeName",
                        "src": "2279:7:7"
                      }
                    ],
                    "id": 4238,
                    "name": "VariableDeclaration",
                    "src": "2279:15:7"
                  }
                ],
                "id": 4239,
                "name": "ParameterList",
                "src": "2262:33:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4243,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 4240,
                        "name": "ElementaryTypeName",
                        "src": "2320:6:7"
                      }
                    ],
                    "id": 4241,
                    "name": "VariableDeclaration",
                    "src": "2320:6:7"
                  }
                ],
                "id": 4242,
                "name": "ParameterList",
                "src": "2319:8:7"
              }
            ],
            "id": 4243,
            "name": "FunctionDefinition",
            "src": "2233:95:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "globalConstraintsCount",
              "payable": false,
              "scope": 4364,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4250,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4244,
                        "name": "ElementaryTypeName",
                        "src": "2390:7:7"
                      }
                    ],
                    "id": 4245,
                    "name": "VariableDeclaration",
                    "src": "2390:15:7"
                  }
                ],
                "id": 4246,
                "name": "ParameterList",
                "src": "2389:17:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4250,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4247,
                        "name": "ElementaryTypeName",
                        "src": "2431:4:7"
                      }
                    ],
                    "id": 4248,
                    "name": "VariableDeclaration",
                    "src": "2431:4:7"
                  }
                ],
                "id": 4249,
                "name": "ParameterList",
                "src": "2430:6:7"
              }
            ],
            "id": 4250,
            "name": "FunctionDefinition",
            "src": "2358:79:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isGlobalConstraintRegistered",
              "payable": false,
              "scope": 4364,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4259,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4251,
                        "name": "ElementaryTypeName",
                        "src": "2481:7:7"
                      }
                    ],
                    "id": 4252,
                    "name": "VariableDeclaration",
                    "src": "2481:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4259,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4253,
                        "name": "ElementaryTypeName",
                        "src": "2507:7:7"
                      }
                    ],
                    "id": 4254,
                    "name": "VariableDeclaration",
                    "src": "2507:15:7"
                  }
                ],
                "id": 4255,
                "name": "ParameterList",
                "src": "2480:43:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4259,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4256,
                        "name": "ElementaryTypeName",
                        "src": "2548:4:7"
                      }
                    ],
                    "id": 4257,
                    "name": "VariableDeclaration",
                    "src": "2548:4:7"
                  }
                ],
                "id": 4258,
                "name": "ParameterList",
                "src": "2547:6:7"
              }
            ],
            "id": 4259,
            "name": "FunctionDefinition",
            "src": "2443:111:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "addGlobalConstraint",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4270,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4260,
                        "name": "ElementaryTypeName",
                        "src": "2862:7:7"
                      }
                    ],
                    "id": 4261,
                    "name": "VariableDeclaration",
                    "src": "2862:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 4270,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4262,
                        "name": "ElementaryTypeName",
                        "src": "2889:7:7"
                      }
                    ],
                    "id": 4263,
                    "name": "VariableDeclaration",
                    "src": "2889:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4270,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4264,
                        "name": "ElementaryTypeName",
                        "src": "2905:7:7"
                      }
                    ],
                    "id": 4265,
                    "name": "VariableDeclaration",
                    "src": "2905:15:7"
                  }
                ],
                "id": 4266,
                "name": "ParameterList",
                "src": "2861:60:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4270,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4267,
                        "name": "ElementaryTypeName",
                        "src": "2941:4:7"
                      }
                    ],
                    "id": 4268,
                    "name": "VariableDeclaration",
                    "src": "2941:4:7"
                  }
                ],
                "id": 4269,
                "name": "ParameterList",
                "src": "2940:6:7"
              }
            ],
            "id": 4270,
            "name": "FunctionDefinition",
            "src": "2833:114:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "removeGlobalConstraint",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 4279,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4271,
                        "name": "ElementaryTypeName",
                        "src": "3199:7:7"
                      }
                    ],
                    "id": 4272,
                    "name": "VariableDeclaration",
                    "src": "3199:25:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4279,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4273,
                        "name": "ElementaryTypeName",
                        "src": "3225:7:7"
                      }
                    ],
                    "id": 4274,
                    "name": "VariableDeclaration",
                    "src": "3225:15:7"
                  }
                ],
                "id": 4275,
                "name": "ParameterList",
                "src": "3198:43:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4279,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4276,
                        "name": "ElementaryTypeName",
                        "src": "3262:4:7"
                      }
                    ],
                    "id": 4277,
                    "name": "VariableDeclaration",
                    "src": "3262:4:7"
                  }
                ],
                "id": 4278,
                "name": "ParameterList",
                "src": "3261:6:7"
              }
            ],
            "id": 4279,
            "name": "FunctionDefinition",
            "src": "3166:102:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "upgradeController",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newController",
                      "scope": 4288,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4280,
                        "name": "ElementaryTypeName",
                        "src": "3554:7:7"
                      }
                    ],
                    "id": 4281,
                    "name": "VariableDeclaration",
                    "src": "3554:22:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4288,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4282,
                        "name": "ElementaryTypeName",
                        "src": "3577:7:7"
                      }
                    ],
                    "id": 4283,
                    "name": "VariableDeclaration",
                    "src": "3577:15:7"
                  }
                ],
                "id": 4284,
                "name": "ParameterList",
                "src": "3553:40:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4288,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4285,
                        "name": "ElementaryTypeName",
                        "src": "3613:4:7"
                      }
                    ],
                    "id": 4286,
                    "name": "VariableDeclaration",
                    "src": "3613:4:7"
                  }
                ],
                "id": 4287,
                "name": "ParameterList",
                "src": "3612:6:7"
              }
            ],
            "id": 4288,
            "name": "FunctionDefinition",
            "src": "3527:92:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "genericAction",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 4298,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 4289,
                            "name": "ElementaryTypeName",
                            "src": "4010:7:7"
                          }
                        ],
                        "id": 4290,
                        "name": "ArrayTypeName",
                        "src": "4010:9:7"
                      }
                    ],
                    "id": 4291,
                    "name": "VariableDeclaration",
                    "src": "4010:17:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4298,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4292,
                        "name": "ElementaryTypeName",
                        "src": "4028:7:7"
                      }
                    ],
                    "id": 4293,
                    "name": "VariableDeclaration",
                    "src": "4028:15:7"
                  }
                ],
                "id": 4294,
                "name": "ParameterList",
                "src": "4009:35:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4298,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4295,
                        "name": "ElementaryTypeName",
                        "src": "4068:4:7"
                      }
                    ],
                    "id": 4296,
                    "name": "VariableDeclaration",
                    "src": "4068:4:7"
                  }
                ],
                "id": 4297,
                "name": "ParameterList",
                "src": "4067:6:7"
              }
            ],
            "id": 4298,
            "name": "FunctionDefinition",
            "src": "3987:87:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "sendEther",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amountInWei",
                      "scope": 4309,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4299,
                        "name": "ElementaryTypeName",
                        "src": "4314:4:7"
                      }
                    ],
                    "id": 4300,
                    "name": "VariableDeclaration",
                    "src": "4314:17:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4309,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4301,
                        "name": "ElementaryTypeName",
                        "src": "4333:7:7"
                      }
                    ],
                    "id": 4302,
                    "name": "VariableDeclaration",
                    "src": "4333:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4309,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4303,
                        "name": "ElementaryTypeName",
                        "src": "4345:7:7"
                      }
                    ],
                    "id": 4304,
                    "name": "VariableDeclaration",
                    "src": "4345:15:7"
                  }
                ],
                "id": 4305,
                "name": "ParameterList",
                "src": "4313:48:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4309,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4306,
                        "name": "ElementaryTypeName",
                        "src": "4381:4:7"
                      }
                    ],
                    "id": 4307,
                    "name": "VariableDeclaration",
                    "src": "4381:4:7"
                  }
                ],
                "id": 4308,
                "name": "ParameterList",
                "src": "4380:6:7"
              }
            ],
            "id": 4309,
            "name": "FunctionDefinition",
            "src": "4295:92:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenTransfer",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 10855,
                          "type": "contract StandardToken"
                        },
                        "id": 4310,
                        "name": "UserDefinedTypeName",
                        "src": "4731:13:7"
                      }
                    ],
                    "id": 4311,
                    "name": "VariableDeclaration",
                    "src": "4731:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4312,
                        "name": "ElementaryTypeName",
                        "src": "4761:7:7"
                      }
                    ],
                    "id": 4313,
                    "name": "VariableDeclaration",
                    "src": "4761:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 4322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4314,
                        "name": "ElementaryTypeName",
                        "src": "4774:4:7"
                      }
                    ],
                    "id": 4315,
                    "name": "VariableDeclaration",
                    "src": "4774:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4316,
                        "name": "ElementaryTypeName",
                        "src": "4786:7:7"
                      }
                    ],
                    "id": 4317,
                    "name": "VariableDeclaration",
                    "src": "4786:15:7"
                  }
                ],
                "id": 4318,
                "name": "ParameterList",
                "src": "4730:72:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4319,
                        "name": "ElementaryTypeName",
                        "src": "4826:4:7"
                      }
                    ],
                    "id": 4320,
                    "name": "VariableDeclaration",
                    "src": "4826:4:7"
                  }
                ],
                "id": 4321,
                "name": "ParameterList",
                "src": "4825:6:7"
              }
            ],
            "id": 4322,
            "name": "FunctionDefinition",
            "src": "4700:132:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenTransferFrom",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 10855,
                          "type": "contract StandardToken"
                        },
                        "id": 4323,
                        "name": "UserDefinedTypeName",
                        "src": "5386:13:7"
                      }
                    ],
                    "id": 4324,
                    "name": "VariableDeclaration",
                    "src": "5386:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4325,
                        "name": "ElementaryTypeName",
                        "src": "5416:7:7"
                      }
                    ],
                    "id": 4326,
                    "name": "VariableDeclaration",
                    "src": "5416:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4327,
                        "name": "ElementaryTypeName",
                        "src": "5431:7:7"
                      }
                    ],
                    "id": 4328,
                    "name": "VariableDeclaration",
                    "src": "5431:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4329,
                        "name": "ElementaryTypeName",
                        "src": "5444:4:7"
                      }
                    ],
                    "id": 4330,
                    "name": "VariableDeclaration",
                    "src": "5444:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4331,
                        "name": "ElementaryTypeName",
                        "src": "5456:7:7"
                      }
                    ],
                    "id": 4332,
                    "name": "VariableDeclaration",
                    "src": "5456:15:7"
                  }
                ],
                "id": 4333,
                "name": "ParameterList",
                "src": "5385:87:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4337,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4334,
                        "name": "ElementaryTypeName",
                        "src": "5496:4:7"
                      }
                    ],
                    "id": 4335,
                    "name": "VariableDeclaration",
                    "src": "5496:4:7"
                  }
                ],
                "id": 4336,
                "name": "ParameterList",
                "src": "5495:6:7"
              }
            ],
            "id": 4337,
            "name": "FunctionDefinition",
            "src": "5351:151:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenIncreaseApproval",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 10855,
                          "type": "contract StandardToken"
                        },
                        "id": 4338,
                        "name": "UserDefinedTypeName",
                        "src": "5946:13:7"
                      }
                    ],
                    "id": 4339,
                    "name": "VariableDeclaration",
                    "src": "5946:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 4350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4340,
                        "name": "ElementaryTypeName",
                        "src": "5976:7:7"
                      }
                    ],
                    "id": 4341,
                    "name": "VariableDeclaration",
                    "src": "5976:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_addedValue",
                      "scope": 4350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4342,
                        "name": "ElementaryTypeName",
                        "src": "5994:4:7"
                      }
                    ],
                    "id": 4343,
                    "name": "VariableDeclaration",
                    "src": "5994:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4344,
                        "name": "ElementaryTypeName",
                        "src": "6011:7:7"
                      }
                    ],
                    "id": 4345,
                    "name": "VariableDeclaration",
                    "src": "6011:15:7"
                  }
                ],
                "id": 4346,
                "name": "ParameterList",
                "src": "5945:82:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4347,
                        "name": "ElementaryTypeName",
                        "src": "6051:4:7"
                      }
                    ],
                    "id": 4348,
                    "name": "VariableDeclaration",
                    "src": "6051:4:7"
                  }
                ],
                "id": 4349,
                "name": "ParameterList",
                "src": "6050:6:7"
              }
            ],
            "id": 4350,
            "name": "FunctionDefinition",
            "src": "5907:150:7"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenDecreaseApproval",
              "payable": false,
              "scope": 4364,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 4363,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 10855,
                          "type": "contract StandardToken"
                        },
                        "id": 4351,
                        "name": "UserDefinedTypeName",
                        "src": "6506:13:7"
                      }
                    ],
                    "id": 4352,
                    "name": "VariableDeclaration",
                    "src": "6506:28:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 4363,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4353,
                        "name": "ElementaryTypeName",
                        "src": "6536:7:7"
                      }
                    ],
                    "id": 4354,
                    "name": "VariableDeclaration",
                    "src": "6536:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_subtractedValue",
                      "scope": 4363,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 4355,
                        "name": "ElementaryTypeName",
                        "src": "6554:4:7"
                      }
                    ],
                    "id": 4356,
                    "name": "VariableDeclaration",
                    "src": "6554:21:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4363,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4357,
                        "name": "ElementaryTypeName",
                        "src": "6576:7:7"
                      }
                    ],
                    "id": 4358,
                    "name": "VariableDeclaration",
                    "src": "6576:15:7"
                  }
                ],
                "id": 4359,
                "name": "ParameterList",
                "src": "6505:87:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4363,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4360,
                        "name": "ElementaryTypeName",
                        "src": "6616:4:7"
                      }
                    ],
                    "id": 4361,
                    "name": "VariableDeclaration",
                    "src": "6616:4:7"
                  }
                ],
                "id": 4362,
                "name": "ParameterList",
                "src": "6615:6:7"
              }
            ],
            "id": 4363,
            "name": "FunctionDefinition",
            "src": "6467:155:7"
          }
        ],
        "id": 4364,
        "name": "ContractDefinition",
        "src": "426:6198:7"
      }
    ],
    "id": 4365,
    "name": "SourceUnit",
    "src": "0:6625:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-01-25T13:14:57.911Z"
}