{
  "contractName": "ControllerInterface",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "burnReputation",
      "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": "_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": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "unregisterScheme",
      "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": "_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": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "removeGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": "_contract",
          "type": "address"
        },
        {
          "name": "_data",
          "type": "bytes"
        },
        {
          "name": "_avatar",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "genericCall",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "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": "_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": "_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"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_metaData",
          "type": "string"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "metaData",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getNativeReputation",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "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": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getSchemeParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getGlobalConstraintParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": "_avatar",
          "type": "address"
        }
      ],
      "name": "globalConstraintsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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"
    }
  ],
  "metadata": "",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.4;\n\nimport \"./Avatar.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 `_amount` of reputation that are assigned to `_to` .\n     * @param  _amount amount of reputation to mint\n     * @param _to beneficiary address\n     * @return bool which represents a success\n    */\n    function mintReputation(uint256 _amount, address _to, address _avatar)\n    external\n    returns(bool);\n\n    /**\n     * @dev Burns `_amount` of reputation from `_from`\n     * @param _amount amount of reputation to burn\n     * @param _from The address that will lose the reputation\n     * @return bool which represents a success\n     */\n    function burnReputation(uint256 _amount, address _from, address _avatar)\n    external\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    external\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    external\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    external\n    returns(bool);\n\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) external 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 the avatar of the organization\n     * @return bool which represents a success\n     */\n    function addGlobalConstraint(address _globalConstraint, bytes32 _params, address _avatar)\n    external returns(bool);\n\n    /**\n     * @dev remove Global Constraint\n     * @param _globalConstraint the address of the global constraint to be remove.\n     * @param _avatar the organization avatar.\n     * @return bool which represents a success\n     */\n    function removeGlobalConstraint (address _globalConstraint, address _avatar)\n    external  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, Avatar _avatar)\n    external returns(bool);\n\n    /**\n    * @dev perform a generic call to an arbitrary contract\n    * @param _contract  the contract's address to call\n    * @param _data ABI-encoded contract call to call `_contract` address.\n    * @param _avatar the controller's avatar address\n    * @param _value value (ETH) to transfer with the transaction\n    * @return bool -success\n    *         bytes  - the return value of the called _contract's function.\n    */\n    function genericCall(address _contract, bytes calldata _data, Avatar _avatar, uint256 _value)\n    external\n    returns(bool, bytes memory);\n\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(uint256 _amountInWei, address payable _to, Avatar _avatar)\n    external 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(IERC20 _externalToken, address _to, uint256 _value, Avatar _avatar)\n    external\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(\n    IERC20 _externalToken,\n    address _from,\n    address _to,\n    uint256 _value,\n    Avatar _avatar)\n    external\n    returns(bool);\n\n    /**\n    * @dev externalTokenApproval approve 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 _value the amount of ether (in Wei) which the approval is referring to.\n    * @return bool which represents a success\n    */\n    function externalTokenApproval(IERC20 _externalToken, address _spender, uint256 _value, Avatar _avatar)\n    external\n    returns(bool);\n\n    /**\n    * @dev metaData emits an event with a string, should contain the hash of some meta data.\n    * @param _metaData a string representing a hash of the meta data\n    * @param _avatar Avatar\n    * @return bool which represents a success\n    */\n    function metaData(string calldata _metaData, Avatar _avatar) external returns(bool);\n\n    /**\n     * @dev getNativeReputation\n     * @param _avatar the organization avatar.\n     * @return organization native reputation\n     */\n    function getNativeReputation(address _avatar)\n    external\n    view\n    returns(address);\n\n    function isSchemeRegistered( address _scheme, address _avatar) external view returns(bool);\n\n    function getSchemeParameters(address _scheme, address _avatar) external view returns(bytes32);\n\n    function getGlobalConstraintParameters(address _globalConstraint, address _avatar) external view returns(bytes32);\n\n    function getSchemePermissions(address _scheme, address _avatar) external view returns(bytes4);\n\n    /**\n     * @dev globalConstraintsCount return the global constraint pre and post count\n     * @return uint256 globalConstraintsPre count.\n     * @return uint256 globalConstraintsPost count.\n     */\n    function globalConstraintsCount(address _avatar) external view returns(uint, uint);\n\n    function isGlobalConstraintRegistered(address _globalConstraint, address _avatar) external view returns(bool);\n}\n",
  "sourcePath": "@daostack/arc/contracts/controller/ControllerInterface.sol",
  "ast": {
    "absolutePath": "@daostack/arc/contracts/controller/ControllerInterface.sol",
    "exportedSymbols": {
      "ControllerInterface": [
        9005
      ]
    },
    "id": 9006,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8774,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Avatar.sol",
        "file": "./Avatar.sol",
        "id": 8775,
        "nodeType": "ImportDirective",
        "scope": 9006,
        "sourceUnit": 7317,
        "src": "25:22:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol",
        "file": "../globalConstraints/GlobalConstraintInterface.sol",
        "id": 8776,
        "nodeType": "ImportDirective",
        "scope": 9006,
        "sourceUnit": 9116,
        "src": "48:60:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "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,
        "id": 9005,
        "linearizedBaseContracts": [
          9005
        ],
        "name": "ControllerInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@dev Mint `_amount` of reputation that are assigned to `_to` .\n@param  _amount amount of reputation to mint\n@param _to beneficiary address\n@return bool which represents a success",
            "id": 8787,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8778,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "656:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8777,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8780,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "673:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "673:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8782,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "686:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "655:47:44"
            },
            "returnParameters": {
              "id": 8786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8785,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "728:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "728:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "727:6:44"
            },
            "scope": 9005,
            "src": "632:102:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Burns `_amount` of reputation from `_from`\n@param _amount amount of reputation to burn\n@param _from The address that will lose the reputation\n@return bool which represents a success",
            "id": 8798,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burnReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8789,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "995:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8791,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1012:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8793,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1027:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1027:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "994:49:44"
            },
            "returnParameters": {
              "id": 8797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8796,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1069:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8795,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1068:6:44"
            },
            "scope": 9005,
            "src": "971:104:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8809,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8800,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1314:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1314:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8802,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1331:20:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8804,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1353:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1353:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1313:56:44"
            },
            "returnParameters": {
              "id": 8808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8807,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1395:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8806,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1395:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1394:6:44"
            },
            "scope": 9005,
            "src": "1294:107:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8822,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerScheme",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8811,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1740:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1740:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8813,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1757:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8812,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1757:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8815,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1778:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8814,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1778:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8817,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1799:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8816,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1799:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1739:76:44"
            },
            "returnParameters": {
              "id": 8821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8820,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1841:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1841:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1840:6:44"
            },
            "scope": 9005,
            "src": "1716:131:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev unregister a scheme\n@param _avatar address\n@param _scheme the address of the scheme\n@return bool which represents a success",
            "id": 8831,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unregisterScheme",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8824,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2052:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2052:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8826,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2069:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8825,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2069:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2051:34:44"
            },
            "returnParameters": {
              "id": 8830,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8829,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2111:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8828,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2110:6:44"
            },
            "scope": 9005,
            "src": "2026:91:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev unregister the caller's scheme\n@param _avatar address\n@return bool which represents a success",
            "id": 8838,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unregisterSelf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8834,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8833,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8838,
                  "src": "2283:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8832,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2283:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2282:17:44"
            },
            "returnParameters": {
              "id": 8837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8836,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8838,
                  "src": "2317:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8835,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2317:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2316:6:44"
            },
            "scope": 9005,
            "src": "2259:64:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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 the avatar of the organization\n@return bool which represents a success",
            "id": 8849,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addGlobalConstraint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8840,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2654:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8842,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2681:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8841,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2681:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8844,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2698:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2698:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2653:61:44"
            },
            "returnParameters": {
              "id": 8848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8847,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2736:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8846,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2735:6:44"
            },
            "scope": 9005,
            "src": "2625:117:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev remove Global Constraint\n@param _globalConstraint the address of the global constraint to be remove.\n@param _avatar the organization avatar.\n@return bool which represents a success",
            "id": 8858,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeGlobalConstraint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8851,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3011:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3011:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8853,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3038:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3038:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3010:44:44"
            },
            "returnParameters": {
              "id": 8857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3077:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8855,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3077:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3076:6:44"
            },
            "scope": 9005,
            "src": "2978:105:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8867,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "upgradeController",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8860,
                  "name": "_newController",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3369:22:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8859,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3369:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8862,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3393:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8861,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "3393:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3368:40:44"
            },
            "returnParameters": {
              "id": 8866,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8865,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3430:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8864,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3430:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3429:6:44"
            },
            "scope": 9005,
            "src": "3342:94:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev perform a generic call to an arbitrary contract\n@param _contract  the contract's address to call\n@param _data ABI-encoded contract call to call `_contract` address.\n@param _avatar the controller's avatar address\n@param _value value (ETH) to transfer with the transaction\n@return bool -success\n        bytes  - the return value of the called _contract's function.",
            "id": 8882,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "genericCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8869,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3888:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8868,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8871,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3907:20:44",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8870,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3907:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8873,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3929:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8872,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "3929:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8875,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3945:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3945:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3887:73:44"
            },
            "returnParameters": {
              "id": 8881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8878,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3986:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8877,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3986:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8880,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3992:12:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8879,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3992:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3985:20:44"
            },
            "scope": 9005,
            "src": "3867:139:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8893,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "sendEther",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8884,
                  "name": "_amountInWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4247:20:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8883,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4247:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8886,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4269:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 8885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4269:15:44",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8888,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4290:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8887,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "4290:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4246:59:44"
            },
            "returnParameters": {
              "id": 8892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8891,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4327:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8890,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4327:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:6:44"
            },
            "scope": 9005,
            "src": "4228:105:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8906,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8895,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4677:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8894,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "4677:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8897,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4700:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4700:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8899,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4713:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4713:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8901,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4729:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8900,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "4729:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4676:68:44"
            },
            "returnParameters": {
              "id": 8905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8904,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4770:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8903,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4770:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4769:6:44"
            },
            "scope": 9005,
            "src": "4646:130:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8921,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenTransferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8908,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5335:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8907,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "5335:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8910,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5362:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5362:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8912,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5381:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5381:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8914,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5398:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5398:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8916,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5418:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8915,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "5418:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5329:104:44"
            },
            "returnParameters": {
              "id": 8920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8919,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5459:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8918,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5459:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5458:6:44"
            },
            "scope": 9005,
            "src": "5295:170:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev externalTokenApproval approve 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 _value the amount of ether (in Wei) which the approval is referring to.\n@return bool which represents a success",
            "id": 8934,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8923,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5875:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8922,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "5875:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8925,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5898:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5898:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8927,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5916:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5916:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8929,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5932:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8928,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "5932:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5874:73:44"
            },
            "returnParameters": {
              "id": 8933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8932,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5973:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8931,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5973:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5972:6:44"
            },
            "scope": 9005,
            "src": "5844:135:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev metaData emits an event with a string, should contain the hash of some meta data.\n@param _metaData a string representing a hash of the meta data\n@param _avatar Avatar\n@return bool which represents a success",
            "id": 8943,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "metaData",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8936,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6254:25:44",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8935,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8938,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6281:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8937,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "6281:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6253:43:44"
            },
            "returnParameters": {
              "id": 8942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8941,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6314:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8940,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6314:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6313:6:44"
            },
            "scope": 9005,
            "src": "6236:84:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev getNativeReputation\n@param _avatar the organization avatar.\n@return organization native reputation",
            "id": 8950,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getNativeReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8945,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8950,
                  "src": "6496:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8944,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6496:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6495:17:44"
            },
            "returnParameters": {
              "id": 8949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8950,
                  "src": "6547:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6547:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6546:9:44"
            },
            "scope": 9005,
            "src": "6467:89:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8959,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isSchemeRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8952,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6591:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6591:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8954,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6608:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6608:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6589:35:44"
            },
            "returnParameters": {
              "id": 8958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8957,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6647:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8956,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6647:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6646:6:44"
            },
            "scope": 9005,
            "src": "6562:91:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8968,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSchemeParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8961,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6688:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6688:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8963,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6705:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8962,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6705:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6687:34:44"
            },
            "returnParameters": {
              "id": 8967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8966,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6744:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6744:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6743:9:44"
            },
            "scope": 9005,
            "src": "6659:94:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8977,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getGlobalConstraintParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8970,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6798:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8969,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6798:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8972,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6825:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6825:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6797:44:44"
            },
            "returnParameters": {
              "id": 8976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8975,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6864:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8974,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6864:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6863:9:44"
            },
            "scope": 9005,
            "src": "6759:114:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8986,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSchemePermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8979,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6909:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8978,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6909:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8981,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6926:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6926:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6908:34:44"
            },
            "returnParameters": {
              "id": 8985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8984,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6965:6:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8983,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6965:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6964:8:44"
            },
            "scope": 9005,
            "src": "6879:94:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev globalConstraintsCount return the global constraint pre and post count\n@return uint256 globalConstraintsPre count.\n@return uint256 globalConstraintsPost count.",
            "id": 8995,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "globalConstraintsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8988,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7213:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7213:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7212:17:44"
            },
            "returnParameters": {
              "id": 8994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8991,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7252:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8990,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7252:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8993,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7258:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8992,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7258:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7251:12:44"
            },
            "scope": 9005,
            "src": "7181:83:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 9004,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isGlobalConstraintRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8997,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7308:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8996,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7308:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8999,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7335:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7335:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7307:44:44"
            },
            "returnParameters": {
              "id": 9003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9002,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7374:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9001,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7374:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7373:6:44"
            },
            "scope": 9005,
            "src": "7270:110:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 9006,
        "src": "373:7009:44"
      }
    ],
    "src": "0:7383:44"
  },
  "legacyAST": {
    "absolutePath": "@daostack/arc/contracts/controller/ControllerInterface.sol",
    "exportedSymbols": {
      "ControllerInterface": [
        9005
      ]
    },
    "id": 9006,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8774,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Avatar.sol",
        "file": "./Avatar.sol",
        "id": 8775,
        "nodeType": "ImportDirective",
        "scope": 9006,
        "sourceUnit": 7317,
        "src": "25:22:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol",
        "file": "../globalConstraints/GlobalConstraintInterface.sol",
        "id": 8776,
        "nodeType": "ImportDirective",
        "scope": 9006,
        "sourceUnit": 9116,
        "src": "48:60:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "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,
        "id": 9005,
        "linearizedBaseContracts": [
          9005
        ],
        "name": "ControllerInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@dev Mint `_amount` of reputation that are assigned to `_to` .\n@param  _amount amount of reputation to mint\n@param _to beneficiary address\n@return bool which represents a success",
            "id": 8787,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8778,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "656:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8777,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8780,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "673:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "673:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8782,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "686:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "655:47:44"
            },
            "returnParameters": {
              "id": 8786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8785,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8787,
                  "src": "728:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "728:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "727:6:44"
            },
            "scope": 9005,
            "src": "632:102:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Burns `_amount` of reputation from `_from`\n@param _amount amount of reputation to burn\n@param _from The address that will lose the reputation\n@return bool which represents a success",
            "id": 8798,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burnReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8789,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "995:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8791,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1012:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8793,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1027:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1027:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "994:49:44"
            },
            "returnParameters": {
              "id": 8797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8796,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8798,
                  "src": "1069:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8795,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1068:6:44"
            },
            "scope": 9005,
            "src": "971:104:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8809,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8800,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1314:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1314:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8802,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1331:20:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8804,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1353:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1353:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1313:56:44"
            },
            "returnParameters": {
              "id": 8808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8807,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8809,
                  "src": "1395:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8806,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1395:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1394:6:44"
            },
            "scope": 9005,
            "src": "1294:107:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8822,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerScheme",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8811,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1740:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1740:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8813,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1757:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8812,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1757:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8815,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1778:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8814,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1778:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8817,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1799:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8816,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1799:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1739:76:44"
            },
            "returnParameters": {
              "id": 8821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8820,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8822,
                  "src": "1841:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1841:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1840:6:44"
            },
            "scope": 9005,
            "src": "1716:131:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev unregister a scheme\n@param _avatar address\n@param _scheme the address of the scheme\n@return bool which represents a success",
            "id": 8831,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unregisterScheme",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8824,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2052:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2052:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8826,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2069:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8825,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2069:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2051:34:44"
            },
            "returnParameters": {
              "id": 8830,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8829,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8831,
                  "src": "2111:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8828,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2110:6:44"
            },
            "scope": 9005,
            "src": "2026:91:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev unregister the caller's scheme\n@param _avatar address\n@return bool which represents a success",
            "id": 8838,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unregisterSelf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8834,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8833,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8838,
                  "src": "2283:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8832,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2283:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2282:17:44"
            },
            "returnParameters": {
              "id": 8837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8836,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8838,
                  "src": "2317:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8835,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2317:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2316:6:44"
            },
            "scope": 9005,
            "src": "2259:64:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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 the avatar of the organization\n@return bool which represents a success",
            "id": 8849,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addGlobalConstraint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8840,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2654:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8842,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2681:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8841,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2681:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8844,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2698:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2698:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2653:61:44"
            },
            "returnParameters": {
              "id": 8848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8847,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8849,
                  "src": "2736:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8846,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2735:6:44"
            },
            "scope": 9005,
            "src": "2625:117:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev remove Global Constraint\n@param _globalConstraint the address of the global constraint to be remove.\n@param _avatar the organization avatar.\n@return bool which represents a success",
            "id": 8858,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeGlobalConstraint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8851,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3011:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3011:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8853,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3038:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3038:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3010:44:44"
            },
            "returnParameters": {
              "id": 8857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8858,
                  "src": "3077:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8855,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3077:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3076:6:44"
            },
            "scope": 9005,
            "src": "2978:105:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8867,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "upgradeController",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8860,
                  "name": "_newController",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3369:22:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8859,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3369:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8862,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3393:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8861,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "3393:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3368:40:44"
            },
            "returnParameters": {
              "id": 8866,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8865,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8867,
                  "src": "3430:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8864,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3430:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3429:6:44"
            },
            "scope": 9005,
            "src": "3342:94:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev perform a generic call to an arbitrary contract\n@param _contract  the contract's address to call\n@param _data ABI-encoded contract call to call `_contract` address.\n@param _avatar the controller's avatar address\n@param _value value (ETH) to transfer with the transaction\n@return bool -success\n        bytes  - the return value of the called _contract's function.",
            "id": 8882,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "genericCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8869,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3888:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8868,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8871,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3907:20:44",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8870,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3907:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8873,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3929:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8872,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "3929:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8875,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3945:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3945:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3887:73:44"
            },
            "returnParameters": {
              "id": 8881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8878,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3986:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8877,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3986:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8880,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8882,
                  "src": "3992:12:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8879,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3992:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3985:20:44"
            },
            "scope": 9005,
            "src": "3867:139:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8893,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "sendEther",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8884,
                  "name": "_amountInWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4247:20:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8883,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4247:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8886,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4269:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 8885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4269:15:44",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8888,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4290:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8887,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "4290:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4246:59:44"
            },
            "returnParameters": {
              "id": 8892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8891,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8893,
                  "src": "4327:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8890,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4327:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:6:44"
            },
            "scope": 9005,
            "src": "4228:105:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8906,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8895,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4677:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8894,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "4677:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8897,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4700:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4700:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8899,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4713:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4713:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8901,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4729:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8900,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "4729:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4676:68:44"
            },
            "returnParameters": {
              "id": 8905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8904,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8906,
                  "src": "4770:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8903,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4770:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4769:6:44"
            },
            "scope": 9005,
            "src": "4646:130:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@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",
            "id": 8921,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenTransferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8908,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5335:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8907,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "5335:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8910,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5362:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5362:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8912,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5381:11:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5381:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8914,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5398:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5398:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8916,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5418:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8915,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "5418:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5329:104:44"
            },
            "returnParameters": {
              "id": 8920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8919,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8921,
                  "src": "5459:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8918,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5459:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5458:6:44"
            },
            "scope": 9005,
            "src": "5295:170:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev externalTokenApproval approve 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 _value the amount of ether (in Wei) which the approval is referring to.\n@return bool which represents a success",
            "id": 8934,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "externalTokenApproval",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8923,
                  "name": "_externalToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5875:21:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8922,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "5875:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8925,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5898:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5898:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8927,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5916:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5916:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8929,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5932:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8928,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "5932:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5874:73:44"
            },
            "returnParameters": {
              "id": 8933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8932,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8934,
                  "src": "5973:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8931,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5973:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5972:6:44"
            },
            "scope": 9005,
            "src": "5844:135:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev metaData emits an event with a string, should contain the hash of some meta data.\n@param _metaData a string representing a hash of the meta data\n@param _avatar Avatar\n@return bool which represents a success",
            "id": 8943,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "metaData",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8936,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6254:25:44",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8935,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8938,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6281:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$7316",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8937,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7316,
                    "src": "6281:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$7316",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6253:43:44"
            },
            "returnParameters": {
              "id": 8942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8941,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8943,
                  "src": "6314:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8940,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6314:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6313:6:44"
            },
            "scope": 9005,
            "src": "6236:84:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev getNativeReputation\n@param _avatar the organization avatar.\n@return organization native reputation",
            "id": 8950,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getNativeReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8945,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8950,
                  "src": "6496:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8944,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6496:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6495:17:44"
            },
            "returnParameters": {
              "id": 8949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8950,
                  "src": "6547:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6547:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6546:9:44"
            },
            "scope": 9005,
            "src": "6467:89:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8959,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isSchemeRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8952,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6591:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6591:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8954,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6608:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6608:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6589:35:44"
            },
            "returnParameters": {
              "id": 8958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8957,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8959,
                  "src": "6647:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8956,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6647:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6646:6:44"
            },
            "scope": 9005,
            "src": "6562:91:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8968,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSchemeParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8961,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6688:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6688:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8963,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6705:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8962,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6705:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6687:34:44"
            },
            "returnParameters": {
              "id": 8967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8966,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8968,
                  "src": "6744:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6744:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6743:9:44"
            },
            "scope": 9005,
            "src": "6659:94:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8977,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getGlobalConstraintParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8970,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6798:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8969,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6798:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8972,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6825:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6825:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6797:44:44"
            },
            "returnParameters": {
              "id": 8976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8975,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8977,
                  "src": "6864:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8974,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6864:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6863:9:44"
            },
            "scope": 9005,
            "src": "6759:114:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 8986,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSchemePermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8979,
                  "name": "_scheme",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6909:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8978,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6909:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8981,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6926:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6926:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6908:34:44"
            },
            "returnParameters": {
              "id": 8985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8984,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8986,
                  "src": "6965:6:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8983,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6965:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6964:8:44"
            },
            "scope": 9005,
            "src": "6879:94:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev globalConstraintsCount return the global constraint pre and post count\n@return uint256 globalConstraintsPre count.\n@return uint256 globalConstraintsPost count.",
            "id": 8995,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "globalConstraintsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8988,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7213:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7213:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7212:17:44"
            },
            "returnParameters": {
              "id": 8994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8991,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7252:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8990,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7252:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8993,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8995,
                  "src": "7258:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8992,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7258:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7251:12:44"
            },
            "scope": 9005,
            "src": "7181:83:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 9004,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isGlobalConstraintRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8997,
                  "name": "_globalConstraint",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7308:25:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8996,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7308:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8999,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7335:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7335:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7307:44:44"
            },
            "returnParameters": {
              "id": 9003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9002,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9004,
                  "src": "7374:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9001,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7374:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7373:6:44"
            },
            "scope": 9005,
            "src": "7270:110:44",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 9006,
        "src": "373:7009:44"
      }
    ],
    "src": "0:7383:44"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.4+commit.9549d8ff.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-07-07T14:28:01.963Z",
  "devdoc": {
    "details": "A controller controls the organizations tokens ,reputation and avatar. It is subject to a set of schemes and constraints that determine its behavior. Each scheme has it own parameters and operation permissions.",
    "methods": {
      "addGlobalConstraint(address,bytes32,address)": {
        "details": "add or update Global Constraint",
        "params": {
          "_avatar": "the avatar of the organization",
          "_globalConstraint": "the address of the global constraint to be added.",
          "_params": "the constraint parameters hash."
        },
        "return": "bool which represents a success"
      },
      "burnReputation(uint256,address,address)": {
        "details": "Burns `_amount` of reputation from `_from`",
        "params": {
          "_amount": "amount of reputation to burn",
          "_from": "The address that will lose the reputation"
        },
        "return": "bool which represents a success"
      },
      "externalTokenApproval(address,address,uint256,address)": {
        "details": "externalTokenApproval approve the spender address to spend a specified amount of tokens     on behalf of msg.sender.",
        "params": {
          "_externalToken": "the address of the Token Contract",
          "_spender": "address",
          "_value": "the amount of ether (in Wei) which the approval is referring to."
        },
        "return": "bool which represents a success"
      },
      "externalTokenTransfer(address,address,uint256,address)": {
        "details": "send some amount of arbitrary ERC20 Tokens",
        "params": {
          "_avatar": "address",
          "_externalToken": "the address of the Token Contract",
          "_to": "address of the beneficiary",
          "_value": "the amount of ether (in Wei) to send"
        },
        "return": "bool which represents a success"
      },
      "externalTokenTransferFrom(address,address,address,uint256,address)": {
        "details": "transfer token \"from\" address \"to\" address     One must to approve the amount of tokens which can be spend from the     \"from\" account.This can be done using externalTokenApprove.",
        "params": {
          "_avatar": "address",
          "_externalToken": "the address of the Token Contract",
          "_from": "address of the account to send from",
          "_to": "address of the beneficiary",
          "_value": "the amount of ether (in Wei) to send"
        },
        "return": "bool which represents a success"
      },
      "genericCall(address,bytes,address,uint256)": {
        "details": "perform a generic call to an arbitrary contract",
        "params": {
          "_avatar": "the controller's avatar address",
          "_contract": "the contract's address to call",
          "_data": "ABI-encoded contract call to call `_contract` address.",
          "_value": "value (ETH) to transfer with the transaction"
        },
        "return": "bool -success        bytes  - the return value of the called _contract's function."
      },
      "getNativeReputation(address)": {
        "details": "getNativeReputation",
        "params": {
          "_avatar": "the organization avatar."
        },
        "return": "organization native reputation"
      },
      "globalConstraintsCount(address)": {
        "details": "globalConstraintsCount return the global constraint pre and post count",
        "return": "uint256 globalConstraintsPre count.uint256 globalConstraintsPost count."
      },
      "metaData(string,address)": {
        "details": "metaData emits an event with a string, should contain the hash of some meta data.",
        "params": {
          "_avatar": "Avatar",
          "_metaData": "a string representing a hash of the meta data"
        },
        "return": "bool which represents a success"
      },
      "mintReputation(uint256,address,address)": {
        "details": "Mint `_amount` of reputation that are assigned to `_to` .",
        "params": {
          "_amount": "amount of reputation to mint",
          "_to": "beneficiary address"
        },
        "return": "bool which represents a success"
      },
      "mintTokens(uint256,address,address)": {
        "details": "mint tokens .",
        "params": {
          "_amount": "amount of token to mint",
          "_avatar": "address",
          "_beneficiary": "beneficiary address"
        },
        "return": "bool which represents a success"
      },
      "registerScheme(address,bytes32,bytes4,address)": {
        "details": "register or update a scheme",
        "params": {
          "_avatar": "address",
          "_paramsHash": "a hashed configuration of the usage of the scheme",
          "_permissions": "the permissions the new scheme will have",
          "_scheme": "the address of the scheme"
        },
        "return": "bool which represents a success"
      },
      "removeGlobalConstraint(address,address)": {
        "details": "remove Global Constraint",
        "params": {
          "_avatar": "the organization avatar.",
          "_globalConstraint": "the address of the global constraint to be remove."
        },
        "return": "bool which represents a success"
      },
      "sendEther(uint256,address,address)": {
        "details": "send some ether",
        "params": {
          "_amountInWei": "the amount of ether (in Wei) to send",
          "_avatar": "address",
          "_to": "address of the beneficiary"
        },
        "return": "bool which represents a success"
      },
      "unregisterScheme(address,address)": {
        "details": "unregister a scheme",
        "params": {
          "_avatar": "address",
          "_scheme": "the address of the scheme"
        },
        "return": "bool which represents a success"
      },
      "unregisterSelf(address)": {
        "details": "unregister the caller's scheme",
        "params": {
          "_avatar": "address"
        },
        "return": "bool which represents a success"
      },
      "upgradeController(address,address)": {
        "details": "upgrade the Controller     The function will trigger an event 'UpgradeController'.",
        "params": {
          "_avatar": "address",
          "_newController": "the address of the new controller."
        },
        "return": "bool which represents a success"
      }
    },
    "title": "Controller contract"
  },
  "userdoc": {
    "methods": {}
  }
}