{
  "fileName": "PaymentSplitter.sol",
  "contractName": "PaymentSplitterUpgradeSafe",
  "source": "pragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../Initializable.sol\";\n\n/**\n * @title PaymentSplitter\n * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware\n * that the Ether will be split in this way, since it is handled transparently by the contract.\n *\n * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each\n * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim\n * an amount proportional to the percentage of total shares they were assigned.\n *\n * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the\n * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release}\n * function.\n */\ncontract PaymentSplitterUpgradeSafe is Initializable, ContextUpgradeSafe {\n    using SafeMath for uint256;\n\n    event PayeeAdded(address account, uint256 shares);\n    event PaymentReleased(address to, uint256 amount);\n    event PaymentReceived(address from, uint256 amount);\n\n    uint256 private _totalShares;\n    uint256 private _totalReleased;\n\n    mapping(address => uint256) private _shares;\n    mapping(address => uint256) private _released;\n    address[] private _payees;\n\n    /**\n     * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at\n     * the matching position in the `shares` array.\n     *\n     * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no\n     * duplicates in `payees`.\n     */\n\n    function __PaymentSplitter_init(address[] memory payees, uint256[] memory shares) internal initializer {\n        __Context_init_unchained();\n        __PaymentSplitter_init_unchained(payees, shares);\n    }\n\n    function __PaymentSplitter_init_unchained(address[] memory payees, uint256[] memory shares) internal initializer {\n\n\n        // solhint-disable-next-line max-line-length\n        require(payees.length == shares.length, \"PaymentSplitter: payees and shares length mismatch\");\n        require(payees.length > 0, \"PaymentSplitter: no payees\");\n\n        for (uint256 i = 0; i < payees.length; i++) {\n            _addPayee(payees[i], shares[i]);\n        }\n\n    }\n\n\n    /**\n     * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully\n     * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the\n     * reliability of the events, and not the actual splitting of Ether.\n     *\n     * To learn more about this see the Solidity documentation for\n     * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback\n     * functions].\n     */\n    receive () external payable virtual {\n        emit PaymentReceived(_msgSender(), msg.value);\n    }\n\n    /**\n     * @dev Getter for the total shares held by payees.\n     */\n    function totalShares() public view returns (uint256) {\n        return _totalShares;\n    }\n\n    /**\n     * @dev Getter for the total amount of Ether already released.\n     */\n    function totalReleased() public view returns (uint256) {\n        return _totalReleased;\n    }\n\n    /**\n     * @dev Getter for the amount of shares held by an account.\n     */\n    function shares(address account) public view returns (uint256) {\n        return _shares[account];\n    }\n\n    /**\n     * @dev Getter for the amount of Ether already released to a payee.\n     */\n    function released(address account) public view returns (uint256) {\n        return _released[account];\n    }\n\n    /**\n     * @dev Getter for the address of the payee number `index`.\n     */\n    function payee(uint256 index) public view returns (address) {\n        return _payees[index];\n    }\n\n    /**\n     * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the\n     * total shares and their previous withdrawals.\n     */\n    function release(address payable account) public virtual {\n        require(_shares[account] > 0, \"PaymentSplitter: account has no shares\");\n\n        uint256 totalReceived = address(this).balance.add(_totalReleased);\n        uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]);\n\n        require(payment != 0, \"PaymentSplitter: account is not due payment\");\n\n        _released[account] = _released[account].add(payment);\n        _totalReleased = _totalReleased.add(payment);\n\n        account.transfer(payment);\n        emit PaymentReleased(account, payment);\n    }\n\n    /**\n     * @dev Add a new payee to the contract.\n     * @param account The address of the payee to add.\n     * @param shares_ The number of shares owned by the payee.\n     */\n    function _addPayee(address account, uint256 shares_) private {\n        require(account != address(0), \"PaymentSplitter: account is the zero address\");\n        require(shares_ > 0, \"PaymentSplitter: shares are 0\");\n        require(_shares[account] == 0, \"PaymentSplitter: account already has shares\");\n\n        _payees.push(account);\n        _shares[account] = shares_;\n        _totalShares = _totalShares.add(shares_);\n        emit PayeeAdded(account, shares_);\n    }\n\n    uint256[45] private __gap;\n}\n",
  "sourcePath": "contracts/payment/PaymentSplitter.sol",
  "sourceMap": "940:4515:71:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;940:4515:71;;;;;;;",
  "deployedSourceMap": "940:4515:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2999:40;3015:12;:10;:12::i;:::-;2999:40;;;-1:-1:-1;;;;;2999:40:71;;;;;3029:9;2999:40;;;;;;;;;;;;;940:4515;;12:1:-1;9;2:12;4163:606:71;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4163:606:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4163:606:71;-1:-1:-1;;;;;4163:606:71;;:::i;:::-;;3124:89;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3124:89:71;;;:::i;:::-;;;;;;;;;;;;;;;;3871:98;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3871:98:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3871:98:71;;:::i;:::-;;;;-1:-1:-1;;;;;3871:98:71;;;;;;;;;;;;;;3678:107;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3678:107:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3678:107:71;-1:-1:-1;;;;;3678:107:71;;:::i;3481:103::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3481:103:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3481:103:71;-1:-1:-1;;;;;3481:103:71;;:::i;3302:93::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3302:93:71;;;:::i;931:104:0:-;1018:10;931:104;:::o;4163:606:71:-;-1:-1:-1;;;;;4238:16:71;;4257:1;4238:16;;;:7;:16;;;;;;4230:71;;;;-1:-1:-1;;;4230:71:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4362:14;;4312:21;;4336:41;;4344:4;4336:21;;:41;:25;:41;:::i;:::-;-1:-1:-1;;;;;4463:18:71;;4387:15;4463:18;;;:9;:18;;;;;;;;;4445:12;;4423:7;:16;;;;;;;4312:65;;-1:-1:-1;4387:15:71;;4405:77;;4463:18;4405:53;;:35;;4312:65;;4405:35;:17;:35;:::i;:::-;:39;:53;:39;:53;:::i;:::-;:57;:77;:57;:77;:::i;:::-;4387:95;-1:-1:-1;4501:12:71;4493:68;;;;-1:-1:-1;;;4493:68:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4593:18:71;;;;;;:9;:18;;;;;;:31;;4616:7;4593:31;:22;:31;:::i;:::-;-1:-1:-1;;;;;4572:18:71;;;;;;:9;:18;;;;;:52;4651:14;;:27;;4670:7;4651:27;:18;:27;:::i;:::-;4634:14;:44;4689:25;;-1:-1:-1;;;;;4689:16:71;;;:25;;;;;4706:7;;4689:25;;;;4706:7;4689:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;4729:33:71;;;-1:-1:-1;;;;;4729:33:71;;;;;;;;;;;;;;;;;;;;;;;4163:606;;;:::o;3124:89::-;3194:12;;3124:89;:::o;3871:98::-;3922:7;3948;3956:5;3948:14;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3948:14:71;;3871:98;-1:-1:-1;;3871:98:71:o;3678:107::-;-1:-1:-1;;;;;3760:18:71;3734:7;3760:18;;;:9;:18;;;;;;;3678:107::o;3481:103::-;-1:-1:-1;;;;;3561:16:71;3535:7;3561:16;;;:7;:16;;;;;;;3481:103::o;3302:93::-;3374:14;;3302:93;:::o;834:176:19:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;-1:-1:-1;834:176:19;;;;;:::o;2119:459::-;2177:7;2418:6;2414:45;;-1:-1:-1;2447:1:19;2440:8;;2414:45;2481:5;;;2485:1;2481;:5;:1;2504:5;;;;;:10;2496:56;;;;-1:-1:-1;;;2496:56:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3033:130;3091:7;3117:39;3121:1;3124;3117:39;;;;;;;;;;;;;;;;;:3;:39::i;1274:134::-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;3638:338::-;3724:7;3824:12;3817:5;3809:28;;;;-1:-1:-1;;;3809:28:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3809:28:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:9;3863:1;3859;:5;;;;;;;3638:338;-1:-1:-1;;;;;3638:338:19:o;1692:187::-;1778:7;1813:12;1805:6;;;;1797:29;;;;-1:-1:-1;;;1797:29:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1797:29:19;-1:-1:-1;;;1848:5:19;;;1692:187::o",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "PayeeAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "PaymentReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "PaymentReleased",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "payee",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "shares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalReleased",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "ast": {
    "absolutePath": "contracts/payment/PaymentSplitter.sol",
    "exportedSymbols": {
      "PaymentSplitterUpgradeSafe": [
        8751
      ]
    },
    "id": 8752,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8422,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:71"
      },
      {
        "absolutePath": "contracts/GSN/Context.sol",
        "file": "../GSN/Context.sol",
        "id": 8423,
        "nodeType": "ImportDirective",
        "scope": 8752,
        "sourceUnit": 45,
        "src": "25:28:71",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/math/SafeMath.sol",
        "file": "../math/SafeMath.sol",
        "id": 8424,
        "nodeType": "ImportDirective",
        "scope": 8752,
        "sourceUnit": 3153,
        "src": "54:30:71",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 8425,
        "nodeType": "ImportDirective",
        "scope": 8752,
        "sourceUnit": 1408,
        "src": "85:30:71",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8427,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1407,
              "src": "979:13:71",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$1407",
                "typeString": "contract Initializable"
              }
            },
            "id": 8428,
            "nodeType": "InheritanceSpecifier",
            "src": "979:13:71"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8429,
              "name": "ContextUpgradeSafe",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 44,
              "src": "994:18:71",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContextUpgradeSafe_$44",
                "typeString": "contract ContextUpgradeSafe"
              }
            },
            "id": 8430,
            "nodeType": "InheritanceSpecifier",
            "src": "994:18:71"
          }
        ],
        "contractDependencies": [
          44,
          1407
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 8426,
          "nodeType": "StructuredDocumentation",
          "src": "117:822:71",
          "text": "@title PaymentSplitter\n@dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware\nthat the Ether will be split in this way, since it is handled transparently by the contract.\n * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each\naccount to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim\nan amount proportional to the percentage of total shares they were assigned.\n * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the\naccounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release}\nfunction."
        },
        "fullyImplemented": true,
        "id": 8751,
        "linearizedBaseContracts": [
          8751,
          44,
          1407
        ],
        "name": "PaymentSplitterUpgradeSafe",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 8433,
            "libraryName": {
              "contractScope": null,
              "id": 8431,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3152,
              "src": "1025:8:71",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$3152",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1019:27:71",
            "typeName": {
              "id": 8432,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1038:7:71",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 8439,
            "name": "PayeeAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8435,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8439,
                  "src": "1069:15:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8434,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8437,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "shares",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8439,
                  "src": "1086:14:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8436,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1086:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1068:33:71"
            },
            "src": "1052:50:71"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 8445,
            "name": "PaymentReleased",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8441,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8445,
                  "src": "1129:10:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1129:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8443,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8445,
                  "src": "1141:14:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8442,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1141:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1128:28:71"
            },
            "src": "1107:50:71"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 8451,
            "name": "PaymentReceived",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8447,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8451,
                  "src": "1184:12:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8446,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8449,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8451,
                  "src": "1198:14:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8448,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1198:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1183:30:71"
            },
            "src": "1162:52:71"
          },
          {
            "constant": false,
            "id": 8453,
            "mutability": "mutable",
            "name": "_totalShares",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "1220:28:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8452,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1220:7:71",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 8455,
            "mutability": "mutable",
            "name": "_totalReleased",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "1254:30:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8454,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1254:7:71",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 8459,
            "mutability": "mutable",
            "name": "_shares",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "1291:43:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 8458,
              "keyType": {
                "id": 8456,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1299:7:71",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1291:27:71",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 8457,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1310:7:71",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 8463,
            "mutability": "mutable",
            "name": "_released",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "1340:45:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 8462,
              "keyType": {
                "id": 8460,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1348:7:71",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1340:27:71",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 8461,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1359:7:71",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 8466,
            "mutability": "mutable",
            "name": "_payees",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "1391:25:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_address_$dyn_storage",
              "typeString": "address[]"
            },
            "typeName": {
              "baseType": {
                "id": 8464,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1391:7:71",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "id": 8465,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1391:9:71",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                "typeString": "address[]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 8486,
              "nodeType": "Block",
              "src": "1873:101:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8478,
                      "name": "__Context_init_unchained",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19,
                      "src": "1883:24:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 8479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1883:26:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8480,
                  "nodeType": "ExpressionStatement",
                  "src": "1883:26:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8482,
                        "name": "payees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8470,
                        "src": "1952:6:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8483,
                        "name": "shares",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8473,
                        "src": "1960:6:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 8481,
                      "name": "__PaymentSplitter_init_unchained",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8538,
                      "src": "1919:32:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address[] memory,uint256[] memory)"
                      }
                    },
                    "id": 8484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1919:48:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8485,
                  "nodeType": "ExpressionStatement",
                  "src": "1919:48:71"
                }
              ]
            },
            "documentation": {
              "id": 8467,
              "nodeType": "StructuredDocumentation",
              "src": "1423:341:71",
              "text": "@dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at\nthe matching position in the `shares` array.\n     * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no\nduplicates in `payees`."
            },
            "id": 8487,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 8476,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8475,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1380,
                  "src": "1861:11:71",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1861:11:71"
              }
            ],
            "name": "__PaymentSplitter_init",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8470,
                  "mutability": "mutable",
                  "name": "payees",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8487,
                  "src": "1802:23:71",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8468,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1802:7:71",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 8469,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1802:9:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8473,
                  "mutability": "mutable",
                  "name": "shares",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8487,
                  "src": "1827:23:71",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8471,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1827:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8472,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1827:9:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1801:50:71"
            },
            "returnParameters": {
              "id": 8477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1873:0:71"
            },
            "scope": 8751,
            "src": "1770:204:71",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8537,
              "nodeType": "Block",
              "src": "2093:342:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8499,
                            "name": "payees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8490,
                            "src": "2166:6:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 8500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2166:13:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8501,
                            "name": "shares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8493,
                            "src": "2183:6:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 8502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2183:13:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2166:30:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a2070617965657320616e6420736861726573206c656e677468206d69736d61746368",
                        "id": 8504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2198:52:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a5e39d6690ea50b22e040fe9ba22acf868e3d7f78e6ca8dc7ae3224a0aade89f",
                          "typeString": "literal_string \"PaymentSplitter: payees and shares length mismatch\""
                        },
                        "value": "PaymentSplitter: payees and shares length mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a5e39d6690ea50b22e040fe9ba22acf868e3d7f78e6ca8dc7ae3224a0aade89f",
                          "typeString": "literal_string \"PaymentSplitter: payees and shares length mismatch\""
                        }
                      ],
                      "id": 8498,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2158:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2158:93:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8506,
                  "nodeType": "ExpressionStatement",
                  "src": "2158:93:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8508,
                            "name": "payees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8490,
                            "src": "2269:6:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 8509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2269:13:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2285:1:71",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2269:17:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a206e6f20706179656573",
                        "id": 8512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2288:28:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f1437b0f4053e38629626a98d8100226576b62fcebc211e7a49225bd05994643",
                          "typeString": "literal_string \"PaymentSplitter: no payees\""
                        },
                        "value": "PaymentSplitter: no payees"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f1437b0f4053e38629626a98d8100226576b62fcebc211e7a49225bd05994643",
                          "typeString": "literal_string \"PaymentSplitter: no payees\""
                        }
                      ],
                      "id": 8507,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2261:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2261:56:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8514,
                  "nodeType": "ExpressionStatement",
                  "src": "2261:56:71"
                },
                {
                  "body": {
                    "id": 8535,
                    "nodeType": "Block",
                    "src": "2372:56:71",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8527,
                                "name": "payees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8490,
                                "src": "2396:6:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8529,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8528,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8516,
                                "src": "2403:1:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2396:9:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8530,
                                "name": "shares",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8493,
                                "src": "2407:6:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 8532,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8531,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8516,
                                "src": "2414:1:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2407:9:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8526,
                            "name": "_addPayee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8746,
                            "src": "2386:9:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 8533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2386:31:71",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8534,
                        "nodeType": "ExpressionStatement",
                        "src": "2386:31:71"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8519,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8516,
                      "src": "2348:1:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8520,
                        "name": "payees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8490,
                        "src": "2352:6:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 8521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2352:13:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2348:17:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8536,
                  "initializationExpression": {
                    "assignments": [
                      8516
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8516,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8536,
                        "src": "2333:9:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2333:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 8518,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 8517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2345:1:71",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2333:13:71"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 8524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2367:3:71",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 8523,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8516,
                        "src": "2367:1:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8525,
                    "nodeType": "ExpressionStatement",
                    "src": "2367:3:71"
                  },
                  "nodeType": "ForStatement",
                  "src": "2328:100:71"
                }
              ]
            },
            "documentation": null,
            "id": 8538,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 8496,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8495,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1380,
                  "src": "2081:11:71",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2081:11:71"
              }
            ],
            "name": "__PaymentSplitter_init_unchained",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8494,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8490,
                  "mutability": "mutable",
                  "name": "payees",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8538,
                  "src": "2022:23:71",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8488,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2022:7:71",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 8489,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2022:9:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8493,
                  "mutability": "mutable",
                  "name": "shares",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8538,
                  "src": "2047:23:71",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8491,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2047:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8492,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2047:9:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2021:50:71"
            },
            "returnParameters": {
              "id": 8497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:71"
            },
            "scope": 8751,
            "src": "1980:455:71",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8549,
              "nodeType": "Block",
              "src": "2984:62:71",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8543,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "3015:10:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 8544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3015:12:71",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8545,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "3029:3:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3029:9:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8542,
                      "name": "PaymentReceived",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8451,
                      "src": "2999:15:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 8547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2999:40:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8548,
                  "nodeType": "EmitStatement",
                  "src": "2994:45:71"
                }
              ]
            },
            "documentation": {
              "id": 8539,
              "nodeType": "StructuredDocumentation",
              "src": "2442:501:71",
              "text": "@dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully\nreliable: it's possible for a contract to receive Ether without triggering this function. This only affects the\nreliability of the events, and not the actual splitting of Ether.\n     * To learn more about this see the Solidity documentation for\nhttps://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback\nfunctions]."
            },
            "id": 8550,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8540,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2956:2:71"
            },
            "returnParameters": {
              "id": 8541,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2984:0:71"
            },
            "scope": 8751,
            "src": "2948:98:71",
            "stateMutability": "payable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8558,
              "nodeType": "Block",
              "src": "3177:36:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8556,
                    "name": "_totalShares",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8453,
                    "src": "3194:12:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8555,
                  "id": 8557,
                  "nodeType": "Return",
                  "src": "3187:19:71"
                }
              ]
            },
            "documentation": {
              "id": 8551,
              "nodeType": "StructuredDocumentation",
              "src": "3052:67:71",
              "text": "@dev Getter for the total shares held by payees."
            },
            "functionSelector": "3a98ef39",
            "id": 8559,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalShares",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8552,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3144:2:71"
            },
            "returnParameters": {
              "id": 8555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8554,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8559,
                  "src": "3168:7:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3167:9:71"
            },
            "scope": 8751,
            "src": "3124:89:71",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8567,
              "nodeType": "Block",
              "src": "3357:38:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8565,
                    "name": "_totalReleased",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8455,
                    "src": "3374:14:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8564,
                  "id": 8566,
                  "nodeType": "Return",
                  "src": "3367:21:71"
                }
              ]
            },
            "documentation": {
              "id": 8560,
              "nodeType": "StructuredDocumentation",
              "src": "3219:78:71",
              "text": "@dev Getter for the total amount of Ether already released."
            },
            "functionSelector": "e33b7de3",
            "id": 8568,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalReleased",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3324:2:71"
            },
            "returnParameters": {
              "id": 8564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8563,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8568,
                  "src": "3348:7:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8562,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3348:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3347:9:71"
            },
            "scope": 8751,
            "src": "3302:93:71",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8580,
              "nodeType": "Block",
              "src": "3544:40:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 8576,
                      "name": "_shares",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8459,
                      "src": "3561:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 8578,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8577,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8571,
                      "src": "3569:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3561:16:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8575,
                  "id": 8579,
                  "nodeType": "Return",
                  "src": "3554:23:71"
                }
              ]
            },
            "documentation": {
              "id": 8569,
              "nodeType": "StructuredDocumentation",
              "src": "3401:75:71",
              "text": "@dev Getter for the amount of shares held by an account."
            },
            "functionSelector": "ce7c2ac2",
            "id": 8581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shares",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8571,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8581,
                  "src": "3497:15:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3497:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3496:17:71"
            },
            "returnParameters": {
              "id": 8575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8574,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8581,
                  "src": "3535:7:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3535:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3534:9:71"
            },
            "scope": 8751,
            "src": "3481:103:71",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8593,
              "nodeType": "Block",
              "src": "3743:42:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 8589,
                      "name": "_released",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8463,
                      "src": "3760:9:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 8591,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8590,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8584,
                      "src": "3770:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3760:18:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8588,
                  "id": 8592,
                  "nodeType": "Return",
                  "src": "3753:25:71"
                }
              ]
            },
            "documentation": {
              "id": 8582,
              "nodeType": "StructuredDocumentation",
              "src": "3590:83:71",
              "text": "@dev Getter for the amount of Ether already released to a payee."
            },
            "functionSelector": "9852595c",
            "id": 8594,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "released",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8584,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8594,
                  "src": "3696:15:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8583,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3696:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3695:17:71"
            },
            "returnParameters": {
              "id": 8588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8587,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8594,
                  "src": "3734:7:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3734:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3733:9:71"
            },
            "scope": 8751,
            "src": "3678:107:71",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8606,
              "nodeType": "Block",
              "src": "3931:38:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 8602,
                      "name": "_payees",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8466,
                      "src": "3948:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 8604,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8603,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8597,
                      "src": "3956:5:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3948:14:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8601,
                  "id": 8605,
                  "nodeType": "Return",
                  "src": "3941:21:71"
                }
              ]
            },
            "documentation": {
              "id": 8595,
              "nodeType": "StructuredDocumentation",
              "src": "3791:75:71",
              "text": "@dev Getter for the address of the payee number `index`."
            },
            "functionSelector": "8b83209b",
            "id": 8607,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8597,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8607,
                  "src": "3886:13:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3886:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3885:15:71"
            },
            "returnParameters": {
              "id": 8601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8600,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8607,
                  "src": "3922:7:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8599,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3922:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3921:9:71"
            },
            "scope": 8751,
            "src": "3871:98:71",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8686,
              "nodeType": "Block",
              "src": "4220:549:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8618,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8614,
                            "name": "_shares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8459,
                            "src": "4238:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8616,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8615,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8610,
                            "src": "4246:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4238:16:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4257:1:71",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4238:20:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420686173206e6f20736861726573",
                        "id": 8619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4260:40:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_41702911e7fdf9741c61509216c070cb4be5837176954fb37acaf958eaff82dd",
                          "typeString": "literal_string \"PaymentSplitter: account has no shares\""
                        },
                        "value": "PaymentSplitter: account has no shares"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_41702911e7fdf9741c61509216c070cb4be5837176954fb37acaf958eaff82dd",
                          "typeString": "literal_string \"PaymentSplitter: account has no shares\""
                        }
                      ],
                      "id": 8613,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4230:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4230:71:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8621,
                  "nodeType": "ExpressionStatement",
                  "src": "4230:71:71"
                },
                {
                  "assignments": [
                    8623
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8623,
                      "mutability": "mutable",
                      "name": "totalReceived",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8686,
                      "src": "4312:21:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8622,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4312:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8632,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8630,
                        "name": "_totalReleased",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8455,
                        "src": "4362:14:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8626,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "4344:4:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PaymentSplitterUpgradeSafe_$8751",
                                "typeString": "contract PaymentSplitterUpgradeSafe"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PaymentSplitterUpgradeSafe_$8751",
                                "typeString": "contract PaymentSplitterUpgradeSafe"
                              }
                            ],
                            "id": 8625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4336:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 8624,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4336:7:71",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4336:13:71",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 8628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4336:21:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2985,
                      "src": "4336:25:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 8631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4336:41:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4312:65:71"
                },
                {
                  "assignments": [
                    8634
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8634,
                      "mutability": "mutable",
                      "name": "payment",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8686,
                      "src": "4387:15:71",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8633,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4387:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8649,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8645,
                          "name": "_released",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8463,
                          "src": "4463:9:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 8647,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 8646,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8610,
                          "src": "4473:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4463:18:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8642,
                            "name": "_totalShares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8453,
                            "src": "4445:12:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 8637,
                                  "name": "_shares",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8459,
                                  "src": "4423:7:71",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 8639,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 8638,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8610,
                                  "src": "4431:7:71",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4423:16:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8635,
                                "name": "totalReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8623,
                                "src": "4405:13:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3065,
                              "src": "4405:17:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4405:35:71",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3082,
                          "src": "4405:39:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4405:53:71",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3002,
                      "src": "4405:57:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 8648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4405:77:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4387:95:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8651,
                          "name": "payment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8634,
                          "src": "4501:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4512:1:71",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4501:12:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74",
                        "id": 8654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4515:45:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57f87f0ebf27afe0d68884e28202f547fd6c4ce1b7243f1356690df65e0fa2e4",
                          "typeString": "literal_string \"PaymentSplitter: account is not due payment\""
                        },
                        "value": "PaymentSplitter: account is not due payment"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57f87f0ebf27afe0d68884e28202f547fd6c4ce1b7243f1356690df65e0fa2e4",
                          "typeString": "literal_string \"PaymentSplitter: account is not due payment\""
                        }
                      ],
                      "id": 8650,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4493:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4493:68:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8656,
                  "nodeType": "ExpressionStatement",
                  "src": "4493:68:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8657,
                        "name": "_released",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8463,
                        "src": "4572:9:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 8659,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8658,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8610,
                        "src": "4582:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4572:18:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8664,
                          "name": "payment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8634,
                          "src": "4616:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8660,
                            "name": "_released",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8463,
                            "src": "4593:9:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8661,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8610,
                            "src": "4603:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4593:18:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2985,
                        "src": "4593:22:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 8665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4593:31:71",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4572:52:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8667,
                  "nodeType": "ExpressionStatement",
                  "src": "4572:52:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8668,
                      "name": "_totalReleased",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8455,
                      "src": "4634:14:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8671,
                          "name": "payment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8634,
                          "src": "4670:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8669,
                          "name": "_totalReleased",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8455,
                          "src": "4651:14:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2985,
                        "src": "4651:18:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 8672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4651:27:71",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4634:44:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8674,
                  "nodeType": "ExpressionStatement",
                  "src": "4634:44:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8678,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8634,
                        "src": "4706:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8675,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8610,
                        "src": "4689:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 8677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4689:16:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 8679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4689:25:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8680,
                  "nodeType": "ExpressionStatement",
                  "src": "4689:25:71"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8682,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8610,
                        "src": "4745:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8683,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8634,
                        "src": "4754:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8681,
                      "name": "PaymentReleased",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8445,
                      "src": "4729:15:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 8684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4729:33:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8685,
                  "nodeType": "EmitStatement",
                  "src": "4724:38:71"
                }
              ]
            },
            "documentation": {
              "id": 8608,
              "nodeType": "StructuredDocumentation",
              "src": "3975:183:71",
              "text": "@dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the\ntotal shares and their previous withdrawals."
            },
            "functionSelector": "19165587",
            "id": 8687,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "release",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8610,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8687,
                  "src": "4180:23:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 8609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4180:15:71",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4179:25:71"
            },
            "returnParameters": {
              "id": 8612,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4220:0:71"
            },
            "scope": 8751,
            "src": "4163:606:71",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8745,
              "nodeType": "Block",
              "src": "5015:406:71",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8696,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8690,
                          "src": "5033:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5052:1:71",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 8698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5044:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 8697,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5044:7:71",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5044:10:71",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5033:21:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420697320746865207a65726f2061646472657373",
                        "id": 8702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5056:46:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_22db6c622fd62a15ab5fca8fc78156905c4f1b5914d7d1db97b192b87e8c816b",
                          "typeString": "literal_string \"PaymentSplitter: account is the zero address\""
                        },
                        "value": "PaymentSplitter: account is the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_22db6c622fd62a15ab5fca8fc78156905c4f1b5914d7d1db97b192b87e8c816b",
                          "typeString": "literal_string \"PaymentSplitter: account is the zero address\""
                        }
                      ],
                      "id": 8695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5025:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5025:78:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8704,
                  "nodeType": "ExpressionStatement",
                  "src": "5025:78:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8706,
                          "name": "shares_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8692,
                          "src": "5121:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5131:1:71",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5121:11:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a20736861726573206172652030",
                        "id": 8709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5134:31:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f9c1be4d5245e2b1590d7367c9c09f1ac5365954d05fed4172915681bdc80ed4",
                          "typeString": "literal_string \"PaymentSplitter: shares are 0\""
                        },
                        "value": "PaymentSplitter: shares are 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f9c1be4d5245e2b1590d7367c9c09f1ac5365954d05fed4172915681bdc80ed4",
                          "typeString": "literal_string \"PaymentSplitter: shares are 0\""
                        }
                      ],
                      "id": 8705,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5113:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5113:53:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8711,
                  "nodeType": "ExpressionStatement",
                  "src": "5113:53:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8713,
                            "name": "_shares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8459,
                            "src": "5184:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8715,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8714,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8690,
                            "src": "5192:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5184:16:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5204:1:71",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5184:21:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420616c72656164792068617320736861726573",
                        "id": 8718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5207:45:71",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df40dd957dfb1d655a61a3d20a7083773a63031454719eb1eb83074b56cf5635",
                          "typeString": "literal_string \"PaymentSplitter: account already has shares\""
                        },
                        "value": "PaymentSplitter: account already has shares"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df40dd957dfb1d655a61a3d20a7083773a63031454719eb1eb83074b56cf5635",
                          "typeString": "literal_string \"PaymentSplitter: account already has shares\""
                        }
                      ],
                      "id": 8712,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5176:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5176:77:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8720,
                  "nodeType": "ExpressionStatement",
                  "src": "5176:77:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8724,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8690,
                        "src": "5277:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8721,
                        "name": "_payees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8466,
                        "src": "5264:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 8723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5264:12:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 8725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5264:21:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8726,
                  "nodeType": "ExpressionStatement",
                  "src": "5264:21:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8727,
                        "name": "_shares",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8459,
                        "src": "5295:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 8729,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8728,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8690,
                        "src": "5303:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5295:16:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8730,
                      "name": "shares_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8692,
                      "src": "5314:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5295:26:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8732,
                  "nodeType": "ExpressionStatement",
                  "src": "5295:26:71"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8733,
                      "name": "_totalShares",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8453,
                      "src": "5331:12:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8736,
                          "name": "shares_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8692,
                          "src": "5363:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8734,
                          "name": "_totalShares",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8453,
                          "src": "5346:12:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2985,
                        "src": "5346:16:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 8737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5346:25:71",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5331:40:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8739,
                  "nodeType": "ExpressionStatement",
                  "src": "5331:40:71"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8741,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8690,
                        "src": "5397:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8742,
                        "name": "shares_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8692,
                        "src": "5406:7:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8740,
                      "name": "PayeeAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8439,
                      "src": "5386:10:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 8743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5386:28:71",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8744,
                  "nodeType": "EmitStatement",
                  "src": "5381:33:71"
                }
              ]
            },
            "documentation": {
              "id": 8688,
              "nodeType": "StructuredDocumentation",
              "src": "4775:174:71",
              "text": "@dev Add a new payee to the contract.\n@param account The address of the payee to add.\n@param shares_ The number of shares owned by the payee."
            },
            "id": 8746,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addPayee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8690,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8746,
                  "src": "4973:15:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4973:7:71",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8692,
                  "mutability": "mutable",
                  "name": "shares_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8746,
                  "src": "4990:15:71",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4990:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4972:34:71"
            },
            "returnParameters": {
              "id": 8694,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5015:0:71"
            },
            "scope": 8751,
            "src": "4954:467:71",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 8750,
            "mutability": "mutable",
            "name": "__gap",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8751,
            "src": "5427:25:71",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$45_storage",
              "typeString": "uint256[45]"
            },
            "typeName": {
              "baseType": {
                "id": 8747,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5427:7:71",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 8749,
              "length": {
                "argumentTypes": null,
                "hexValue": "3435",
                "id": 8748,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5435:2:71",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_45_by_1",
                  "typeString": "int_const 45"
                },
                "value": "45"
              },
              "nodeType": "ArrayTypeName",
              "src": "5427:11:71",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$45_storage_ptr",
                "typeString": "uint256[45]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 8752,
        "src": "940:4515:71"
      }
    ],
    "src": "0:5456:71"
  },
  "bytecode": "0x608060405234801561001057600080fd5b50610700806100206000396000f3fe6080604052600436106100595760003560e01c806319165587146100ae5780633a98ef39146100e35780638b83209b1461010a5780639852595c14610150578063ce7c2ac214610183578063e33b7de3146101b6576100a9565b366100a9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706100876101cb565b604080516001600160a01b0390921682523460208301528051918290030190a1005b600080fd5b3480156100ba57600080fd5b506100e1600480360360208110156100d157600080fd5b50356001600160a01b03166101cf565b005b3480156100ef57600080fd5b506100f86103b0565b60408051918252519081900360200190f35b34801561011657600080fd5b506101346004803603602081101561012d57600080fd5b50356103b6565b604080516001600160a01b039092168252519081900360200190f35b34801561015c57600080fd5b506100f86004803603602081101561017357600080fd5b50356001600160a01b03166103e0565b34801561018f57600080fd5b506100f8600480360360208110156101a657600080fd5b50356001600160a01b03166103fb565b3480156101c257600080fd5b506100f8610416565b3390565b6001600160a01b0381166000908152606760205260409020546102235760405162461bcd60e51b81526004018080602001828103825260268152602001806106596026913960400191505060405180910390fd5b60665460009061023b9030319063ffffffff61041c16565b6001600160a01b038316600090815260686020908152604080832054606554606790935290832054939450919261029a929161028e9161028290879063ffffffff61047f16565b9063ffffffff6104d816565b9063ffffffff61051a16565b9050806102d85760405162461bcd60e51b815260040180806020018281038252602b81526020018061067f602b913960400191505060405180910390fd5b6001600160a01b038316600090815260686020526040902054610301908263ffffffff61041c16565b6001600160a01b03841660009081526068602052604090205560665461032d908263ffffffff61041c16565b6066556040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610366573d6000803e3d6000fd5b50604080516001600160a01b03851681526020810183905281517fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056929181900390910190a1505050565b60655490565b6000606982815481106103c557fe5b6000918252602090912001546001600160a01b031692915050565b6001600160a01b031660009081526068602052604090205490565b6001600160a01b031660009081526067602052604090205490565b60665490565b600082820183811015610476576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008261048e57506000610479565b8282028284828161049b57fe5b04146104765760405162461bcd60e51b81526004018080602001828103825260218152602001806106aa6021913960400191505060405180910390fd5b600061047683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061055c565b600061047683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506105fe565b600081836105e85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105ad578181015183820152602001610595565b50505050905090810190601f1680156105da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105f457fe5b0495945050505050565b600081848411156106505760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ad578181015183820152602001610595565b50505090039056fe5061796d656e7453706c69747465723a206163636f756e7420686173206e6f207368617265735061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220c54d9f797c286e871c56798af9c73ded6d43a6003295435bab03b6d7066a017c64736f6c63430006070033",
  "deployedBytecode": "0x6080604052600436106100595760003560e01c806319165587146100ae5780633a98ef39146100e35780638b83209b1461010a5780639852595c14610150578063ce7c2ac214610183578063e33b7de3146101b6576100a9565b366100a9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706100876101cb565b604080516001600160a01b0390921682523460208301528051918290030190a1005b600080fd5b3480156100ba57600080fd5b506100e1600480360360208110156100d157600080fd5b50356001600160a01b03166101cf565b005b3480156100ef57600080fd5b506100f86103b0565b60408051918252519081900360200190f35b34801561011657600080fd5b506101346004803603602081101561012d57600080fd5b50356103b6565b604080516001600160a01b039092168252519081900360200190f35b34801561015c57600080fd5b506100f86004803603602081101561017357600080fd5b50356001600160a01b03166103e0565b34801561018f57600080fd5b506100f8600480360360208110156101a657600080fd5b50356001600160a01b03166103fb565b3480156101c257600080fd5b506100f8610416565b3390565b6001600160a01b0381166000908152606760205260409020546102235760405162461bcd60e51b81526004018080602001828103825260268152602001806106596026913960400191505060405180910390fd5b60665460009061023b9030319063ffffffff61041c16565b6001600160a01b038316600090815260686020908152604080832054606554606790935290832054939450919261029a929161028e9161028290879063ffffffff61047f16565b9063ffffffff6104d816565b9063ffffffff61051a16565b9050806102d85760405162461bcd60e51b815260040180806020018281038252602b81526020018061067f602b913960400191505060405180910390fd5b6001600160a01b038316600090815260686020526040902054610301908263ffffffff61041c16565b6001600160a01b03841660009081526068602052604090205560665461032d908263ffffffff61041c16565b6066556040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610366573d6000803e3d6000fd5b50604080516001600160a01b03851681526020810183905281517fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056929181900390910190a1505050565b60655490565b6000606982815481106103c557fe5b6000918252602090912001546001600160a01b031692915050565b6001600160a01b031660009081526068602052604090205490565b6001600160a01b031660009081526067602052604090205490565b60665490565b600082820183811015610476576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008261048e57506000610479565b8282028284828161049b57fe5b04146104765760405162461bcd60e51b81526004018080602001828103825260218152602001806106aa6021913960400191505060405180910390fd5b600061047683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061055c565b600061047683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506105fe565b600081836105e85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105ad578181015183820152602001610595565b50505050905090810190601f1680156105da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105f457fe5b0495945050505050565b600081848411156106505760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ad578181015183820152602001610595565b50505090039056fe5061796d656e7453706c69747465723a206163636f756e7420686173206e6f207368617265735061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220c54d9f797c286e871c56798af9c73ded6d43a6003295435bab03b6d7066a017c64736f6c63430006070033",
  "compiler": {
    "name": "solc",
    "version": "0.6.7+commit.b8d736ae.Emscripten.clang",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "petersburg"
  }
}
