{
  "contractName": "SecretStoreServiceBase",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "keyServerSetAddressInit",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keyServersCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "requireKeyServer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "drain",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "//! The Secret Store service contract intefaces.\n//!\n//! Copyright 2017 Svyatoslav Nikolsky, Parity Technologies Ltd.\n//!\n//! Licensed under the Apache License, Version 2.0 (the \"License\");\n//! you may not use this file except in compliance with the License.\n//! You may obtain a copy of the License at\n//!\n//!     http://www.apache.org/licenses/LICENSE-2.0\n//!\n//! Unless required by applicable law or agreed to in writing, software\n//! distributed under the License is distributed on an \"AS IS\" BASIS,\n//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//! See the License for the specific language governing permissions and\n//! limitations under the License.\n\npragma solidity ^0.4.24;\n\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"../interfaces/KeyServerSet.sol\";\n\n\n/// Base contract for all Secret Store services.\ncontract SecretStoreServiceBase is Ownable {\n    /// Response support.\n    enum ResponseSupport { Confirmed, Unconfirmed, Impossible }\n\n    /// Single service request responses.\n    struct RequestResponses {\n        /// Number of block when servers set has been changed last time.\n        /// This whole structure is valid when this value stays the same.\n        /// Once this changes, all previous responses are erased.\n        uint256 keyServerSetChangeBlock;\n        /// We only support up to 256 key servers. If bit is set, this means that key server\n        /// has already voted for some confirmation (we do not care about exact response).\n        uint256 respondedKeyServersMask;\n        /// Number of key servers that have responded to request (number of ones in respondedKeyServersMask).\n        uint8 respondedKeyServersCount;\n        /// Response => number of supporting key servers.\n        mapping (bytes32 => uint8) responsesSupport;\n        /// Maximal support of single response.\n        uint8 maxResponseSupport;\n        /// All responses that are in responsesSupport. In ideal world, when all\n        /// key servers are working correctly, there'll be 1 response. Max 256 responses.\n        bytes32[] responses;\n    }\n\n    /// Only pass when fee is paid.\n    modifier whenFeePaid(uint256 amount) {\n        require(msg.value >= amount, \"Transaction value is not enough.\");\n        _;\n    }\n\n    /// Only pass when 'valid' public is passed.\n    modifier validPublic(bytes publicKey) {\n        require(publicKey.length == 64, \"Public key is not valid.\");\n        _;\n    }\n\n    /// Constructor.\n    constructor(address keyServerSetAddressInit) internal {\n        keyServerSetAddress = keyServerSetAddressInit;\n    }\n\n    /// Return number of key servers.\n    function keyServersCount() public view returns (uint8) {\n        return KeyServerSet(keyServerSetAddress).getCurrentKeyServersCount();\n    }\n\n    /// Return index of key server at given address.\n    function requireKeyServer(address keyServer) public view returns (uint8) {\n        return KeyServerSet(keyServerSetAddress).getCurrentKeyServerIndex(keyServer);\n    }\n\n    /// Drain balance of sender key server.\n    function drain() public {\n        uint256 balance = balances[msg.sender];\n        require(balance != 0, \"Balance is 0.\");\n        balances[msg.sender] = 0;\n        msg.sender.transfer(balance);\n    }\n\n    /// Deposit equal share of amount to each of key servers.\n    function deposit() internal {\n        uint8 count = keyServersCount();\n        uint256 amount = msg.value;\n        uint256 share = amount / count;\n        for (uint8 i = 0; i < count - 1; i++) {\n            address keyServer = KeyServerSet(keyServerSetAddress).getCurrentKeyServer(i);\n            balances[keyServer] += share;\n            amount = amount - share;\n        }\n\n        address lastKeyServer = KeyServerSet(keyServerSetAddress).getCurrentKeyServer(count - 1);\n        balances[lastKeyServer] += amount;\n    }\n\n    /// Returns true if response from given keyServer is required.\n    function isResponseRequired(RequestResponses storage responses, uint8 keyServerIndex) internal view returns (bool) {\n        // if servers set has changed, new response is definitely required\n        uint256 keyServerSetChangeBlock = KeyServerSet(keyServerSetAddress).getCurrentLastChange();\n        if (keyServerSetChangeBlock != responses.keyServerSetChangeBlock) {\n            return true;\n        }\n\n        // only require response when server has not responded before\n        uint256 keyServerMask = (uint256(1) << keyServerIndex);\n        return ((responses.respondedKeyServersMask & keyServerMask) == 0);\n    }\n\n    /// Insert key server confirmation.\n    function insertResponse(\n        RequestResponses storage responses,\n        uint8 keyServerIndex,\n        uint8 threshold,\n        bytes32 response) internal returns (ResponseSupport)\n    {\n        // check that servers set is still the same (and all previous responses are valid)\n        uint256 keyServerSetChangeBlock = KeyServerSet(keyServerSetAddress).getCurrentLastChange();\n        if (responses.respondedKeyServersCount == 0) {\n            responses.keyServerSetChangeBlock = keyServerSetChangeBlock;\n        } else if (responses.keyServerSetChangeBlock != keyServerSetChangeBlock) {\n            resetResponses(responses, keyServerSetChangeBlock);\n        }\n\n        // check if key server has already responded\n        uint256 keyServerMask = (uint256(1) << keyServerIndex);\n        if ((responses.respondedKeyServersMask & keyServerMask) != 0) {\n            return ResponseSupport.Unconfirmed;\n        }\n\n        // insert response\n        uint8 responseSupport = responses.responsesSupport[response] + 1;\n        responses.respondedKeyServersMask |= keyServerMask;\n        responses.respondedKeyServersCount += 1;\n        responses.responsesSupport[response] = responseSupport;\n        if (responseSupport == 1) {\n            responses.responses.push(response);\n        }\n        if (responseSupport >= responses.maxResponseSupport) {\n            responses.maxResponseSupport = responseSupport;\n\n            // check if passed response has received enough support\n            if (threshold <= responseSupport - 1) {\n                return ResponseSupport.Confirmed;\n            }\n        }\n\n        // check if max confirmation CAN receive enough support\n        uint8 keyServersLeft = keyServersCount() - responses.respondedKeyServersCount;\n        if (threshold > responses.maxResponseSupport + keyServersLeft - 1) {\n            return ResponseSupport.Impossible;\n        }\n\n        return ResponseSupport.Unconfirmed;\n    }\n\n    /// Clear responses before removal.\n    function clearResponses(RequestResponses storage responses) internal {\n        for (uint256 i = 0; i < responses.responses.length; ++i) {\n            delete responses.responsesSupport[responses.responses[i]];\n        }\n    }\n\n    /// Remove request id from array.\n    function removeRequestKey(bytes32[] storage requests, bytes32 request) internal {\n        for (uint i = 0; i < requests.length; ++i) {\n            if (requests[i] == request) {\n                requests[i] = requests[requests.length - 1];\n                requests.length = requests.length - 1;\n                break;\n            }\n        }\n    }\n\n    /// Reset responses.\n    function resetResponses(RequestResponses storage responses, uint256 keyServerSetChangeBlock) private {\n        clearResponses(responses);\n        responses.keyServerSetChangeBlock = keyServerSetChangeBlock;\n        responses.respondedKeyServersMask = 0;\n        responses.respondedKeyServersCount = 0;\n        responses.maxResponseSupport = 0;\n        responses.responses.length = 0;\n    }\n\n    /// Address of KeyServerSet contract.\n    address private keyServerSetAddress;\n    /// Balances of key servers.\n    mapping (address => uint256) private balances;\n    /// Active requests.\n    mapping (bytes32 => RequestResponses) private requests;\n}\n",
  "sourcePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
    "exportedSymbols": {
      "SecretStoreServiceBase": [
        3512
      ]
    },
    "id": 3513,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2986,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "689:24:8"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2987,
        "nodeType": "ImportDirective",
        "scope": 3513,
        "sourceUnit": 4824,
        "src": "715:63:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/KeyServerSet.sol",
        "file": "../interfaces/KeyServerSet.sol",
        "id": 2988,
        "nodeType": "ImportDirective",
        "scope": 3513,
        "sourceUnit": 577,
        "src": "779:40:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2989,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4823,
              "src": "906:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4823",
                "typeString": "contract Ownable"
              }
            },
            "id": 2990,
            "nodeType": "InheritanceSpecifier",
            "src": "906:7:8"
          }
        ],
        "contractDependencies": [
          4823
        ],
        "contractKind": "contract",
        "documentation": "Base contract for all Secret Store services.",
        "fullyImplemented": true,
        "id": 3512,
        "linearizedBaseContracts": [
          3512,
          4823
        ],
        "name": "SecretStoreServiceBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreServiceBase.ResponseSupport",
            "id": 2994,
            "members": [
              {
                "id": 2991,
                "name": "Confirmed",
                "nodeType": "EnumValue",
                "src": "969:9:8"
              },
              {
                "id": 2992,
                "name": "Unconfirmed",
                "nodeType": "EnumValue",
                "src": "980:11:8"
              },
              {
                "id": 2993,
                "name": "Impossible",
                "nodeType": "EnumValue",
                "src": "993:10:8"
              }
            ],
            "name": "ResponseSupport",
            "nodeType": "EnumDefinition",
            "src": "946:59:8"
          },
          {
            "canonicalName": "SecretStoreServiceBase.RequestResponses",
            "id": 3010,
            "members": [
              {
                "constant": false,
                "id": 2996,
                "name": "keyServerSetChangeBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1300:31:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2995,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1300:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2998,
                "name": "respondedKeyServersMask",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1525:31:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2997,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1525:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3000,
                "name": "respondedKeyServersCount",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1676:30:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2999,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1676:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3004,
                "name": "responsesSupport",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1774:43:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                  "typeString": "mapping(bytes32 => uint8)"
                },
                "typeName": {
                  "id": 3003,
                  "keyType": {
                    "id": 3001,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1783:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1774:26:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                    "typeString": "mapping(bytes32 => uint8)"
                  },
                  "valueType": {
                    "id": 3002,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1794:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3006,
                "name": "maxResponseSupport",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1875:24:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 3005,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1875:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3009,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "2080:19:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2080:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3008,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2080:9:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "RequestResponses",
            "nodeType": "StructDefinition",
            "scope": 3512,
            "src": "1053:1053:8",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3023,
              "nodeType": "Block",
              "src": "2185:92:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3015,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4838,
                            "src": "2203:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2203:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3017,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3012,
                          "src": "2216:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2203:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e",
                        "id": 3019,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2224:34:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2e4febf048d0fe99c3c2c50b647281bff807d672b3037bb311fe7ebee57e1add",
                          "typeString": "literal_string \"Transaction value is not enough.\""
                        },
                        "value": "Transaction value is not enough."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2e4febf048d0fe99c3c2c50b647281bff807d672b3037bb311fe7ebee57e1add",
                          "typeString": "literal_string \"Transaction value is not enough.\""
                        }
                      ],
                      "id": 3014,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2195:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2195:64:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3021,
                  "nodeType": "ExpressionStatement",
                  "src": "2195:64:8"
                },
                {
                  "id": 3022,
                  "nodeType": "PlaceholderStatement",
                  "src": "2269:1:8"
                }
              ]
            },
            "documentation": "Only pass when fee is paid.",
            "id": 3024,
            "name": "whenFeePaid",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3012,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3024,
                  "src": "2169:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2169:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2168:16:8"
            },
            "src": "2148:129:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3037,
              "nodeType": "Block",
              "src": "2370:87:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3029,
                            "name": "publicKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3026,
                            "src": "2388:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2388:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2408:2:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "2388:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5075626c6963206b6579206973206e6f742076616c69642e",
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2412:26:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        },
                        "value": "Public key is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        }
                      ],
                      "id": 3028,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2380:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2380:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3035,
                  "nodeType": "ExpressionStatement",
                  "src": "2380:59:8"
                },
                {
                  "id": 3036,
                  "nodeType": "PlaceholderStatement",
                  "src": "2449:1:8"
                }
              ]
            },
            "documentation": "Only pass when 'valid' public is passed.",
            "id": 3038,
            "name": "validPublic",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3026,
                  "name": "publicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3038,
                  "src": "2353:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3025,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2353:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2352:17:8"
            },
            "src": "2332:125:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3047,
              "nodeType": "Block",
              "src": "2538:62:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3043,
                      "name": "keyServerSetAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3503,
                      "src": "2548:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3044,
                      "name": "keyServerSetAddressInit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3040,
                      "src": "2570:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2548:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3046,
                  "nodeType": "ExpressionStatement",
                  "src": "2548:45:8"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 3048,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3040,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3048,
                  "src": "2496:31:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2495:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2538:0:8"
            },
            "scope": 3512,
            "src": "2484:116:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3059,
              "nodeType": "Block",
              "src": "2699:85:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3054,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "2729:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3053,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "2716:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2716:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 424,
                      "src": "2716:59:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 3057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2716:61:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3052,
                  "id": 3058,
                  "nodeType": "Return",
                  "src": "2709:68:8"
                }
              ]
            },
            "documentation": "Return number of key servers.",
            "id": 3060,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "keyServersCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2668:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3051,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3060,
                  "src": "2692:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3050,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2692:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2691:7:8"
            },
            "scope": 3512,
            "src": "2644:140:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3074,
              "nodeType": "Block",
              "src": "2916:93:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3071,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3062,
                        "src": "2992:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3068,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "2946:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3067,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "2933:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2933:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServerIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 419,
                      "src": "2933:58:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view external returns (uint8)"
                      }
                    },
                    "id": 3072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2933:69:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3066,
                  "id": 3073,
                  "nodeType": "Return",
                  "src": "2926:76:8"
                }
              ]
            },
            "documentation": "Return index of key server at given address.",
            "id": 3075,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "requireKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3062,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3075,
                  "src": "2869:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3061,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2869:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2868:19:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3065,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3075,
                  "src": "2909:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3064,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2909:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2908:7:8"
            },
            "scope": 3512,
            "src": "2843:166:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3107,
              "nodeType": "Block",
              "src": "3083:175:8",
              "statements": [
                {
                  "assignments": [
                    3079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3079,
                      "name": "balance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3108,
                      "src": "3093:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3078,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3093:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3084,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3080,
                      "name": "balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3507,
                      "src": "3111:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 3083,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3081,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "3120:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3120:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3111:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3093:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3086,
                          "name": "balance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3079,
                          "src": "3149:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3160:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3149:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616c616e636520697320302e",
                        "id": 3089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3163:15:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6a8dc2f3c8e80740e0ac4db929e5dbf02fedaa7976abf98b11ad2c214a314cc4",
                          "typeString": "literal_string \"Balance is 0.\""
                        },
                        "value": "Balance is 0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6a8dc2f3c8e80740e0ac4db929e5dbf02fedaa7976abf98b11ad2c214a314cc4",
                          "typeString": "literal_string \"Balance is 0.\""
                        }
                      ],
                      "id": 3085,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3141:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3141:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3091,
                  "nodeType": "ExpressionStatement",
                  "src": "3141:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3092,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3507,
                        "src": "3189:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3093,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3198:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3198:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3189:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3212:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3189:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3098,
                  "nodeType": "ExpressionStatement",
                  "src": "3189:24:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3104,
                        "name": "balance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3079,
                        "src": "3243:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3099,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3223:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3223:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3223:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3223:28:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3106,
                  "nodeType": "ExpressionStatement",
                  "src": "3223:28:8"
                }
              ]
            },
            "documentation": "Drain balance of sender key server.",
            "id": 3108,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "drain",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3073:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3083:0:8"
            },
            "scope": 3512,
            "src": "3059:199:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3179,
              "nodeType": "Block",
              "src": "3354:493:8",
              "statements": [
                {
                  "assignments": [
                    3112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3112,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3364:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3111,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3364:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3115,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3113,
                      "name": "keyServersCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3060,
                      "src": "3378:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                        "typeString": "function () view returns (uint8)"
                      }
                    },
                    "id": 3114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3378:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3364:31:8"
                },
                {
                  "assignments": [
                    3117
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3117,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3405:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3116,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3405:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3120,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3118,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4838,
                      "src": "3422:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 3119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3422:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3405:26:8"
                },
                {
                  "assignments": [
                    3122
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3122,
                      "name": "share",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3441:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3121,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3441:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3126,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3123,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "3457:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3124,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3112,
                      "src": "3466:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3457:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3441:30:8"
                },
                {
                  "body": {
                    "id": 3160,
                    "nodeType": "Block",
                    "src": "3519:180:8",
                    "statements": [
                      {
                        "assignments": [
                          3140
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3140,
                            "name": "keyServer",
                            "nodeType": "VariableDeclaration",
                            "scope": 3180,
                            "src": "3533:17:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3139,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3533:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3147,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3145,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3128,
                              "src": "3607:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3142,
                                  "name": "keyServerSetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3503,
                                  "src": "3566:19:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3141,
                                "name": "KeyServerSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 452,
                                "src": "3553:12:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                                  "typeString": "type(contract KeyServerSet)"
                                }
                              },
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3553:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_KeyServerSet_$452",
                                "typeString": "contract KeyServerSet"
                              }
                            },
                            "id": 3144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentKeyServer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 431,
                            "src": "3553:53:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint8_$returns$_t_address_$",
                              "typeString": "function (uint8) view external returns (address)"
                            }
                          },
                          "id": 3146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3553:56:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3533:76:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3148,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3507,
                              "src": "3623:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3150,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3149,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3140,
                              "src": "3632:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3623:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3151,
                            "name": "share",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3122,
                            "src": "3646:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3623:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3153,
                        "nodeType": "ExpressionStatement",
                        "src": "3623:28:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3154,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3117,
                            "src": "3665:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3155,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "3674:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3156,
                              "name": "share",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3122,
                              "src": "3683:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3674:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3665:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3159,
                        "nodeType": "ExpressionStatement",
                        "src": "3665:23:8"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3131,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3128,
                      "src": "3499:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 3134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3132,
                        "name": "count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "3503:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3511:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3503:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3499:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3161,
                  "initializationExpression": {
                    "assignments": [
                      3128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3128,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3180,
                        "src": "3486:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3127,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3486:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3496:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3486:11:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3514:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3136,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3128,
                        "src": "3514:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 3138,
                    "nodeType": "ExpressionStatement",
                    "src": "3514:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "3481:218:8"
                },
                {
                  "assignments": [
                    3163
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3163,
                      "name": "lastKeyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3709:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3162,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3709:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3172,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3168,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3112,
                          "src": "3787:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3795:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3787:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3165,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "3746:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3164,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "3733:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3733:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 431,
                      "src": "3733:53:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint8_$returns$_t_address_$",
                        "typeString": "function (uint8) view external returns (address)"
                      }
                    },
                    "id": 3171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3733:64:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3709:88:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3173,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3507,
                        "src": "3807:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3175,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3174,
                        "name": "lastKeyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3163,
                        "src": "3816:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3807:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3176,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "3834:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3807:33:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3178,
                  "nodeType": "ExpressionStatement",
                  "src": "3807:33:8"
                }
              ]
            },
            "documentation": "Deposit equal share of amount to each of key servers.",
            "id": 3180,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3342:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3354:0:8"
            },
            "scope": 3512,
            "src": "3326:521:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3223,
              "nodeType": "Block",
              "src": "4035:503:8",
              "statements": [
                {
                  "assignments": [
                    3190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3190,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3224,
                      "src": "4120:31:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3189,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4120:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3196,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3192,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "4167:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3191,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "4154:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4154:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentLastChange",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 412,
                      "src": "4154:54:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 3195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4154:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4120:90:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3197,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3190,
                      "src": "4224:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3198,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3182,
                        "src": "4251:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keyServerSetChangeBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2996,
                      "src": "4251:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4224:60:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3204,
                  "nodeType": "IfStatement",
                  "src": "4220:102:8",
                  "trueBody": {
                    "id": 3203,
                    "nodeType": "Block",
                    "src": "4286:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4307:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3188,
                        "id": 3202,
                        "nodeType": "Return",
                        "src": "4300:11:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3206
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3206,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 3224,
                      "src": "4402:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4402:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3213,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4435:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4427:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 3209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4427:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3210,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3184,
                          "src": "4441:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "4427:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3212,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4426:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4402:54:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3214,
                                  "name": "responses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3182,
                                  "src": "4475:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                  }
                                },
                                "id": 3215,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "respondedKeyServersMask",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2998,
                                "src": "4475:33:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3216,
                                "name": "keyServerMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3206,
                                "src": "4511:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4475:49:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3218,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4474:51:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4529:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4474:56:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3221,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4473:58:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3188,
                  "id": 3222,
                  "nodeType": "Return",
                  "src": "4466:65:8"
                }
              ]
            },
            "documentation": "Returns true if response from given keyServer is required.",
            "id": 3224,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3182,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "3948:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3181,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "3948:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3184,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "3984:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3183,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3984:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3947:58:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3187,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "4029:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3186,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:6:8"
            },
            "scope": 3512,
            "src": "3920:618:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3377,
              "nodeType": "Block",
              "src": "4773:1749:8",
              "statements": [
                {
                  "assignments": [
                    3238
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3238,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "4874:31:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3237,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4874:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3244,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3240,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "4921:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3239,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "4908:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4908:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentLastChange",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 412,
                      "src": "4908:54:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4908:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4874:90:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3245,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "4978:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "4978:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5016:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4978:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3259,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3256,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5113:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3257,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyServerSetChangeBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2996,
                        "src": "5113:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3258,
                        "name": "keyServerSetChangeBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3238,
                        "src": "5150:23:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5113:60:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3266,
                    "nodeType": "IfStatement",
                    "src": "5109:141:8",
                    "trueBody": {
                      "id": 3265,
                      "nodeType": "Block",
                      "src": "5175:75:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3261,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "5204:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3262,
                                "name": "keyServerSetChangeBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3238,
                                "src": "5215:23:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3260,
                              "name": "resetResponses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3501,
                              "src": "5189:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint256_$returns$__$",
                                "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint256)"
                              }
                            },
                            "id": 3263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5189:50:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3264,
                          "nodeType": "ExpressionStatement",
                          "src": "5189:50:8"
                        }
                      ]
                    }
                  },
                  "id": 3267,
                  "nodeType": "IfStatement",
                  "src": "4974:276:8",
                  "trueBody": {
                    "id": 3255,
                    "nodeType": "Block",
                    "src": "5019:84:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3249,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5033:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "keyServerSetChangeBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2996,
                            "src": "5033:33:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3252,
                            "name": "keyServerSetChangeBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3238,
                            "src": "5069:23:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5033:59:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3254,
                        "nodeType": "ExpressionStatement",
                        "src": "5033:59:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3269
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3269,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "5313:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5313:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3276,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5346:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5338:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 3272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5338:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3273,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3228,
                          "src": "5352:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5338:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3275,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5337:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5313:54:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3277,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5382:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3278,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "respondedKeyServersMask",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2998,
                            "src": "5382:33:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3279,
                            "name": "keyServerMask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3269,
                            "src": "5418:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5382:49:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3281,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5381:51:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5436:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5381:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3288,
                  "nodeType": "IfStatement",
                  "src": "5377:121:8",
                  "trueBody": {
                    "id": 3287,
                    "nodeType": "Block",
                    "src": "5439:59:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3284,
                            "name": "ResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "5460:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 3285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Unconfirmed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5460:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "functionReturnParameters": 3236,
                        "id": 3286,
                        "nodeType": "Return",
                        "src": "5453:34:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3290
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3290,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "5535:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3289,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5535:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3297,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3291,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5559:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3292,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responsesSupport",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3004,
                        "src": "5559:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                          "typeString": "mapping(bytes32 => uint8)"
                        }
                      },
                      "id": 3294,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3293,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3232,
                        "src": "5586:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5559:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5598:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5559:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5535:64:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3298,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5609:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3300,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersMask",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2998,
                      "src": "5609:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3301,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3269,
                      "src": "5646:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5609:50:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3303,
                  "nodeType": "ExpressionStatement",
                  "src": "5609:50:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5669:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "5669:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5707:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5669:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3309,
                  "nodeType": "ExpressionStatement",
                  "src": "5669:39:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3310,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5718:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3313,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responsesSupport",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3004,
                        "src": "5718:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                          "typeString": "mapping(bytes32 => uint8)"
                        }
                      },
                      "id": 3314,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3312,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3232,
                        "src": "5745:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5718:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3315,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5757:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5718:54:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3317,
                  "nodeType": "ExpressionStatement",
                  "src": "5718:54:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3318,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5786:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5805:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5786:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3330,
                  "nodeType": "IfStatement",
                  "src": "5782:85:8",
                  "trueBody": {
                    "id": 3329,
                    "nodeType": "Block",
                    "src": "5808:59:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3326,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3232,
                              "src": "5847:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3321,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "5822:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3009,
                              "src": "5822:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 3325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5822:24:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 3327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5822:34:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3328,
                        "nodeType": "ExpressionStatement",
                        "src": "5822:34:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3331,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5880:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3332,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5899:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3333,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxResponseSupport",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3006,
                      "src": "5899:28:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5880:47:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3352,
                  "nodeType": "IfStatement",
                  "src": "5876:309:8",
                  "trueBody": {
                    "id": 3351,
                    "nodeType": "Block",
                    "src": "5929:256:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3335,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5943:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3337,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "maxResponseSupport",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3006,
                            "src": "5943:28:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3338,
                            "name": "responseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "5974:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "5943:46:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 3340,
                        "nodeType": "ExpressionStatement",
                        "src": "5943:46:8"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3341,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3230,
                            "src": "6076:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3342,
                              "name": "responseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3290,
                              "src": "6089:15:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6107:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "6089:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "6076:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3350,
                        "nodeType": "IfStatement",
                        "src": "6072:103:8",
                        "trueBody": {
                          "id": 3349,
                          "nodeType": "Block",
                          "src": "6110:65:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3346,
                                  "name": "ResponseSupport",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2994,
                                  "src": "6135:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                    "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                  }
                                },
                                "id": 3347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Confirmed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6135:25:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                  "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                                }
                              },
                              "functionReturnParameters": 3236,
                              "id": 3348,
                              "nodeType": "Return",
                              "src": "6128:32:8"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3354
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3354,
                      "name": "keyServersLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "6259:20:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3353,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6259:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3360,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3355,
                        "name": "keyServersCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3060,
                        "src": "6282:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                          "typeString": "function () view returns (uint8)"
                        }
                      },
                      "id": 3356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6282:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3357,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "6302:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3358,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "6302:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6282:54:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6259:77:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3361,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3230,
                      "src": "6350:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 3367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "responses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "6362:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                              "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maxResponseSupport",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3006,
                          "src": "6362:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3364,
                          "name": "keyServersLeft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3354,
                          "src": "6393:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "6362:45:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6410:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6362:49:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6350:61:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3373,
                  "nodeType": "IfStatement",
                  "src": "6346:125:8",
                  "trueBody": {
                    "id": 3372,
                    "nodeType": "Block",
                    "src": "6413:58:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3369,
                            "name": "ResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "6434:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Impossible",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6434:26:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "functionReturnParameters": 3236,
                        "id": 3371,
                        "nodeType": "Return",
                        "src": "6427:33:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3374,
                      "name": "ResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2994,
                      "src": "6488:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 3375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "Unconfirmed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6488:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "functionReturnParameters": 3236,
                  "id": 3376,
                  "nodeType": "Return",
                  "src": "6481:34:8"
                }
              ]
            },
            "documentation": "Insert key server confirmation.",
            "id": 3378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insertResponse",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3226,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4617:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3225,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "4617:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3228,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4661:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3227,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4661:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3230,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4691:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3229,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4691:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3232,
                  "name": "response",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4716:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3231,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4716:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:126:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4752:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                    "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3234,
                    "name": "ResponseSupport",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2994,
                    "src": "4752:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4751:17:8"
            },
            "scope": 3512,
            "src": "4584:1938:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3406,
              "nodeType": "Block",
              "src": "6637:155:8",
              "statements": [
                {
                  "body": {
                    "id": 3404,
                    "nodeType": "Block",
                    "src": "6704:82:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6718:57:8",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3395,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3380,
                                "src": "6725:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              "id": 3396,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responsesSupport",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3004,
                              "src": "6725:26:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                                "typeString": "mapping(bytes32 => uint8)"
                              }
                            },
                            "id": 3401,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3397,
                                  "name": "responses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3380,
                                  "src": "6752:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                  }
                                },
                                "id": 3398,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responses",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3009,
                                "src": "6752:19:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 3400,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3399,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3384,
                                "src": "6772:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6752:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6725:50:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3403,
                        "nodeType": "ExpressionStatement",
                        "src": "6718:57:8"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3387,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3384,
                      "src": "6667:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3388,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3380,
                          "src": "6671:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3389,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3009,
                        "src": "6671:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3390,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6671:26:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6667:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3405,
                  "initializationExpression": {
                    "assignments": [
                      3384
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3384,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3407,
                        "src": "6652:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6652:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3386,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6664:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6652:13:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6699:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3392,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3384,
                        "src": "6701:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3394,
                    "nodeType": "ExpressionStatement",
                    "src": "6699:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6647:139:8"
                }
              ]
            },
            "documentation": "Clear responses before removal.",
            "id": 3407,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearResponses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3380,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3407,
                  "src": "6592:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3379,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "6592:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6591:36:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3382,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6637:0:8"
            },
            "scope": 3512,
            "src": "6568:224:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3456,
              "nodeType": "Block",
              "src": "6916:265:8",
              "statements": [
                {
                  "body": {
                    "id": 3454,
                    "nodeType": "Block",
                    "src": "6969:206:8",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3426,
                              "name": "requests",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3410,
                              "src": "6987:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[] storage pointer"
                              }
                            },
                            "id": 3428,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3427,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3416,
                              "src": "6996:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6987:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3429,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3412,
                            "src": "7002:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6987:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3453,
                        "nodeType": "IfStatement",
                        "src": "6983:182:8",
                        "trueBody": {
                          "id": 3452,
                          "nodeType": "Block",
                          "src": "7011:154:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3431,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7029:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3433,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3432,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3416,
                                    "src": "7038:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7029:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3434,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7043:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3439,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3435,
                                        "name": "requests",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3410,
                                        "src": "7052:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                          "typeString": "bytes32[] storage pointer"
                                        }
                                      },
                                      "id": 3436,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7052:15:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7070:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "7052:19:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7043:29:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "7029:43:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3441,
                              "nodeType": "ExpressionStatement",
                              "src": "7029:43:8"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3442,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7090:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3444,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7090:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3445,
                                      "name": "requests",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3410,
                                      "src": "7108:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                        "typeString": "bytes32[] storage pointer"
                                      }
                                    },
                                    "id": 3446,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7108:15:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7126:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "7108:19:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7090:37:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3450,
                              "nodeType": "ExpressionStatement",
                              "src": "7090:37:8"
                            },
                            {
                              "id": 3451,
                              "nodeType": "Break",
                              "src": "7145:5:8"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3419,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3416,
                      "src": "6943:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3420,
                        "name": "requests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3410,
                        "src": "6947:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[] storage pointer"
                        }
                      },
                      "id": 3421,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6947:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6943:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3455,
                  "initializationExpression": {
                    "assignments": [
                      3416
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3416,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3457,
                        "src": "6931:6:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3415,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6931:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3418,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6940:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6931:10:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6964:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3423,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3416,
                        "src": "6966:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3425,
                    "nodeType": "ExpressionStatement",
                    "src": "6964:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6926:249:8"
                }
              ]
            },
            "documentation": "Remove request id from array.",
            "id": 3457,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeRequestKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3410,
                  "name": "requests",
                  "nodeType": "VariableDeclaration",
                  "scope": 3457,
                  "src": "6862:26:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3408,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6862:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3409,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6862:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3412,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 3457,
                  "src": "6890:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6890:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6861:45:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6916:0:8"
            },
            "scope": 3512,
            "src": "6836:345:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3500,
              "nodeType": "Block",
              "src": "7313:288:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3465,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7338:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      ],
                      "id": 3464,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "7323:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 3466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7323:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3467,
                  "nodeType": "ExpressionStatement",
                  "src": "7323:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7358:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3470,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keyServerSetChangeBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2996,
                      "src": "7358:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3471,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3461,
                      "src": "7394:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7358:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3473,
                  "nodeType": "ExpressionStatement",
                  "src": "7358:59:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3474,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7427:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersMask",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2998,
                      "src": "7427:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7463:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7427:37:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3479,
                  "nodeType": "ExpressionStatement",
                  "src": "7427:37:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3480,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7474:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3482,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "7474:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7511:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7474:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3485,
                  "nodeType": "ExpressionStatement",
                  "src": "7474:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3486,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7522:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maxResponseSupport",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3006,
                      "src": "7522:28:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7553:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7522:32:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3491,
                  "nodeType": "ExpressionStatement",
                  "src": "7522:32:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3492,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3459,
                          "src": "7564:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3495,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3009,
                        "src": "7564:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7564:26:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7593:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7564:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3499,
                  "nodeType": "ExpressionStatement",
                  "src": "7564:30:8"
                }
              ]
            },
            "documentation": "Reset responses.",
            "id": 3501,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resetResponses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3459,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3501,
                  "src": "7236:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3458,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "7236:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "keyServerSetChangeBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3501,
                  "src": "7272:31:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7272:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7235:69:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7313:0:8"
            },
            "scope": 3512,
            "src": "7212:389:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3503,
            "name": "keyServerSetAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7649:35:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3502,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "7649:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3507,
            "name": "balances",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7723:45:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 3506,
              "keyType": {
                "id": 3504,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7732:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "7723:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 3505,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7743:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3511,
            "name": "requests",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7799:54:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RequestResponses_$3010_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreServiceBase.RequestResponses)"
            },
            "typeName": {
              "id": 3510,
              "keyType": {
                "id": 3508,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7808:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "7799:37:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RequestResponses_$3010_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreServiceBase.RequestResponses)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3509,
                "name": "RequestResponses",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3010,
                "src": "7819:16:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                }
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 3513,
        "src": "871:6985:8"
      }
    ],
    "src": "689:7168:8"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
    "exportedSymbols": {
      "SecretStoreServiceBase": [
        3512
      ]
    },
    "id": 3513,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2986,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "689:24:8"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2987,
        "nodeType": "ImportDirective",
        "scope": 3513,
        "sourceUnit": 4824,
        "src": "715:63:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/KeyServerSet.sol",
        "file": "../interfaces/KeyServerSet.sol",
        "id": 2988,
        "nodeType": "ImportDirective",
        "scope": 3513,
        "sourceUnit": 577,
        "src": "779:40:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2989,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4823,
              "src": "906:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4823",
                "typeString": "contract Ownable"
              }
            },
            "id": 2990,
            "nodeType": "InheritanceSpecifier",
            "src": "906:7:8"
          }
        ],
        "contractDependencies": [
          4823
        ],
        "contractKind": "contract",
        "documentation": "Base contract for all Secret Store services.",
        "fullyImplemented": true,
        "id": 3512,
        "linearizedBaseContracts": [
          3512,
          4823
        ],
        "name": "SecretStoreServiceBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreServiceBase.ResponseSupport",
            "id": 2994,
            "members": [
              {
                "id": 2991,
                "name": "Confirmed",
                "nodeType": "EnumValue",
                "src": "969:9:8"
              },
              {
                "id": 2992,
                "name": "Unconfirmed",
                "nodeType": "EnumValue",
                "src": "980:11:8"
              },
              {
                "id": 2993,
                "name": "Impossible",
                "nodeType": "EnumValue",
                "src": "993:10:8"
              }
            ],
            "name": "ResponseSupport",
            "nodeType": "EnumDefinition",
            "src": "946:59:8"
          },
          {
            "canonicalName": "SecretStoreServiceBase.RequestResponses",
            "id": 3010,
            "members": [
              {
                "constant": false,
                "id": 2996,
                "name": "keyServerSetChangeBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1300:31:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2995,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1300:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2998,
                "name": "respondedKeyServersMask",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1525:31:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2997,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1525:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3000,
                "name": "respondedKeyServersCount",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1676:30:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2999,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1676:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3004,
                "name": "responsesSupport",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1774:43:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                  "typeString": "mapping(bytes32 => uint8)"
                },
                "typeName": {
                  "id": 3003,
                  "keyType": {
                    "id": 3001,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1783:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1774:26:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                    "typeString": "mapping(bytes32 => uint8)"
                  },
                  "valueType": {
                    "id": 3002,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1794:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3006,
                "name": "maxResponseSupport",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "1875:24:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 3005,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1875:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3009,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 3010,
                "src": "2080:19:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2080:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3008,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2080:9:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "RequestResponses",
            "nodeType": "StructDefinition",
            "scope": 3512,
            "src": "1053:1053:8",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3023,
              "nodeType": "Block",
              "src": "2185:92:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3015,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4838,
                            "src": "2203:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2203:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3017,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3012,
                          "src": "2216:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2203:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e",
                        "id": 3019,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2224:34:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2e4febf048d0fe99c3c2c50b647281bff807d672b3037bb311fe7ebee57e1add",
                          "typeString": "literal_string \"Transaction value is not enough.\""
                        },
                        "value": "Transaction value is not enough."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2e4febf048d0fe99c3c2c50b647281bff807d672b3037bb311fe7ebee57e1add",
                          "typeString": "literal_string \"Transaction value is not enough.\""
                        }
                      ],
                      "id": 3014,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2195:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2195:64:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3021,
                  "nodeType": "ExpressionStatement",
                  "src": "2195:64:8"
                },
                {
                  "id": 3022,
                  "nodeType": "PlaceholderStatement",
                  "src": "2269:1:8"
                }
              ]
            },
            "documentation": "Only pass when fee is paid.",
            "id": 3024,
            "name": "whenFeePaid",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3012,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3024,
                  "src": "2169:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2169:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2168:16:8"
            },
            "src": "2148:129:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3037,
              "nodeType": "Block",
              "src": "2370:87:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3029,
                            "name": "publicKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3026,
                            "src": "2388:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2388:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2408:2:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "2388:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5075626c6963206b6579206973206e6f742076616c69642e",
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2412:26:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        },
                        "value": "Public key is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        }
                      ],
                      "id": 3028,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2380:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2380:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3035,
                  "nodeType": "ExpressionStatement",
                  "src": "2380:59:8"
                },
                {
                  "id": 3036,
                  "nodeType": "PlaceholderStatement",
                  "src": "2449:1:8"
                }
              ]
            },
            "documentation": "Only pass when 'valid' public is passed.",
            "id": 3038,
            "name": "validPublic",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3026,
                  "name": "publicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3038,
                  "src": "2353:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3025,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2353:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2352:17:8"
            },
            "src": "2332:125:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3047,
              "nodeType": "Block",
              "src": "2538:62:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3043,
                      "name": "keyServerSetAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3503,
                      "src": "2548:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3044,
                      "name": "keyServerSetAddressInit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3040,
                      "src": "2570:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2548:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3046,
                  "nodeType": "ExpressionStatement",
                  "src": "2548:45:8"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 3048,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3040,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3048,
                  "src": "2496:31:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2495:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2538:0:8"
            },
            "scope": 3512,
            "src": "2484:116:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3059,
              "nodeType": "Block",
              "src": "2699:85:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3054,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "2729:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3053,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "2716:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2716:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 424,
                      "src": "2716:59:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 3057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2716:61:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3052,
                  "id": 3058,
                  "nodeType": "Return",
                  "src": "2709:68:8"
                }
              ]
            },
            "documentation": "Return number of key servers.",
            "id": 3060,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "keyServersCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2668:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3051,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3060,
                  "src": "2692:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3050,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2692:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2691:7:8"
            },
            "scope": 3512,
            "src": "2644:140:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3074,
              "nodeType": "Block",
              "src": "2916:93:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3071,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3062,
                        "src": "2992:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3068,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "2946:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3067,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "2933:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2933:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServerIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 419,
                      "src": "2933:58:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view external returns (uint8)"
                      }
                    },
                    "id": 3072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2933:69:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3066,
                  "id": 3073,
                  "nodeType": "Return",
                  "src": "2926:76:8"
                }
              ]
            },
            "documentation": "Return index of key server at given address.",
            "id": 3075,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "requireKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3062,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3075,
                  "src": "2869:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3061,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2869:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2868:19:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3065,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3075,
                  "src": "2909:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3064,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2909:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2908:7:8"
            },
            "scope": 3512,
            "src": "2843:166:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3107,
              "nodeType": "Block",
              "src": "3083:175:8",
              "statements": [
                {
                  "assignments": [
                    3079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3079,
                      "name": "balance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3108,
                      "src": "3093:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3078,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3093:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3084,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3080,
                      "name": "balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3507,
                      "src": "3111:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 3083,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3081,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "3120:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3120:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3111:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3093:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3086,
                          "name": "balance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3079,
                          "src": "3149:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3160:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3149:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "42616c616e636520697320302e",
                        "id": 3089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3163:15:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6a8dc2f3c8e80740e0ac4db929e5dbf02fedaa7976abf98b11ad2c214a314cc4",
                          "typeString": "literal_string \"Balance is 0.\""
                        },
                        "value": "Balance is 0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6a8dc2f3c8e80740e0ac4db929e5dbf02fedaa7976abf98b11ad2c214a314cc4",
                          "typeString": "literal_string \"Balance is 0.\""
                        }
                      ],
                      "id": 3085,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3141:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3141:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3091,
                  "nodeType": "ExpressionStatement",
                  "src": "3141:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3092,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3507,
                        "src": "3189:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3093,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3198:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3198:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3189:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3212:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3189:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3098,
                  "nodeType": "ExpressionStatement",
                  "src": "3189:24:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3104,
                        "name": "balance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3079,
                        "src": "3243:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3099,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3223:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3223:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3223:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3223:28:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3106,
                  "nodeType": "ExpressionStatement",
                  "src": "3223:28:8"
                }
              ]
            },
            "documentation": "Drain balance of sender key server.",
            "id": 3108,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "drain",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3073:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3083:0:8"
            },
            "scope": 3512,
            "src": "3059:199:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3179,
              "nodeType": "Block",
              "src": "3354:493:8",
              "statements": [
                {
                  "assignments": [
                    3112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3112,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3364:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3111,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3364:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3115,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3113,
                      "name": "keyServersCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3060,
                      "src": "3378:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                        "typeString": "function () view returns (uint8)"
                      }
                    },
                    "id": 3114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3378:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3364:31:8"
                },
                {
                  "assignments": [
                    3117
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3117,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3405:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3116,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3405:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3120,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3118,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4838,
                      "src": "3422:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 3119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3422:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3405:26:8"
                },
                {
                  "assignments": [
                    3122
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3122,
                      "name": "share",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3441:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3121,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3441:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3126,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3123,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "3457:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3124,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3112,
                      "src": "3466:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3457:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3441:30:8"
                },
                {
                  "body": {
                    "id": 3160,
                    "nodeType": "Block",
                    "src": "3519:180:8",
                    "statements": [
                      {
                        "assignments": [
                          3140
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3140,
                            "name": "keyServer",
                            "nodeType": "VariableDeclaration",
                            "scope": 3180,
                            "src": "3533:17:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3139,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3533:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3147,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3145,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3128,
                              "src": "3607:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3142,
                                  "name": "keyServerSetAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3503,
                                  "src": "3566:19:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3141,
                                "name": "KeyServerSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 452,
                                "src": "3553:12:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                                  "typeString": "type(contract KeyServerSet)"
                                }
                              },
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3553:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_KeyServerSet_$452",
                                "typeString": "contract KeyServerSet"
                              }
                            },
                            "id": 3144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentKeyServer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 431,
                            "src": "3553:53:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint8_$returns$_t_address_$",
                              "typeString": "function (uint8) view external returns (address)"
                            }
                          },
                          "id": 3146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3553:56:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3533:76:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3148,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3507,
                              "src": "3623:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3150,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3149,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3140,
                              "src": "3632:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3623:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3151,
                            "name": "share",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3122,
                            "src": "3646:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3623:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3153,
                        "nodeType": "ExpressionStatement",
                        "src": "3623:28:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3154,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3117,
                            "src": "3665:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3155,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "3674:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3156,
                              "name": "share",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3122,
                              "src": "3683:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3674:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3665:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3159,
                        "nodeType": "ExpressionStatement",
                        "src": "3665:23:8"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3131,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3128,
                      "src": "3499:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 3134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3132,
                        "name": "count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "3503:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3511:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3503:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3499:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3161,
                  "initializationExpression": {
                    "assignments": [
                      3128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3128,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3180,
                        "src": "3486:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3127,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3486:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3496:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3486:11:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3514:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3136,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3128,
                        "src": "3514:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 3138,
                    "nodeType": "ExpressionStatement",
                    "src": "3514:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "3481:218:8"
                },
                {
                  "assignments": [
                    3163
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3163,
                      "name": "lastKeyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 3180,
                      "src": "3709:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3162,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3709:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3172,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3168,
                          "name": "count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3112,
                          "src": "3787:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3795:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3787:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3165,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "3746:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3164,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "3733:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3733:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentKeyServer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 431,
                      "src": "3733:53:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint8_$returns$_t_address_$",
                        "typeString": "function (uint8) view external returns (address)"
                      }
                    },
                    "id": 3171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3733:64:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3709:88:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3173,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3507,
                        "src": "3807:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3175,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3174,
                        "name": "lastKeyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3163,
                        "src": "3816:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3807:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3176,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "3834:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3807:33:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3178,
                  "nodeType": "ExpressionStatement",
                  "src": "3807:33:8"
                }
              ]
            },
            "documentation": "Deposit equal share of amount to each of key servers.",
            "id": 3180,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3342:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3354:0:8"
            },
            "scope": 3512,
            "src": "3326:521:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3223,
              "nodeType": "Block",
              "src": "4035:503:8",
              "statements": [
                {
                  "assignments": [
                    3190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3190,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3224,
                      "src": "4120:31:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3189,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4120:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3196,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3192,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "4167:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3191,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "4154:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4154:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentLastChange",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 412,
                      "src": "4154:54:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 3195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4154:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4120:90:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3197,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3190,
                      "src": "4224:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3198,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3182,
                        "src": "4251:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keyServerSetChangeBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2996,
                      "src": "4251:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4224:60:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3204,
                  "nodeType": "IfStatement",
                  "src": "4220:102:8",
                  "trueBody": {
                    "id": 3203,
                    "nodeType": "Block",
                    "src": "4286:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4307:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3188,
                        "id": 3202,
                        "nodeType": "Return",
                        "src": "4300:11:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3206
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3206,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 3224,
                      "src": "4402:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4402:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3213,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4435:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4427:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 3209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4427:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3210,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3184,
                          "src": "4441:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "4427:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3212,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4426:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4402:54:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3214,
                                  "name": "responses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3182,
                                  "src": "4475:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                  }
                                },
                                "id": 3215,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "respondedKeyServersMask",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2998,
                                "src": "4475:33:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3216,
                                "name": "keyServerMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3206,
                                "src": "4511:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4475:49:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3218,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4474:51:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4529:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4474:56:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3221,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4473:58:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3188,
                  "id": 3222,
                  "nodeType": "Return",
                  "src": "4466:65:8"
                }
              ]
            },
            "documentation": "Returns true if response from given keyServer is required.",
            "id": 3224,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3182,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "3948:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3181,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "3948:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3184,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "3984:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3183,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3984:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3947:58:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3187,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3224,
                  "src": "4029:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3186,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:6:8"
            },
            "scope": 3512,
            "src": "3920:618:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3377,
              "nodeType": "Block",
              "src": "4773:1749:8",
              "statements": [
                {
                  "assignments": [
                    3238
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3238,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "4874:31:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3237,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4874:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3244,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3240,
                            "name": "keyServerSetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "4921:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3239,
                          "name": "KeyServerSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 452,
                          "src": "4908:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_KeyServerSet_$452_$",
                            "typeString": "type(contract KeyServerSet)"
                          }
                        },
                        "id": 3241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4908:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KeyServerSet_$452",
                          "typeString": "contract KeyServerSet"
                        }
                      },
                      "id": 3242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getCurrentLastChange",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 412,
                      "src": "4908:54:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4908:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4874:90:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3245,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "4978:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "4978:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5016:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4978:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3259,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3256,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5113:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3257,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyServerSetChangeBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2996,
                        "src": "5113:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3258,
                        "name": "keyServerSetChangeBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3238,
                        "src": "5150:23:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5113:60:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3266,
                    "nodeType": "IfStatement",
                    "src": "5109:141:8",
                    "trueBody": {
                      "id": 3265,
                      "nodeType": "Block",
                      "src": "5175:75:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3261,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "5204:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3262,
                                "name": "keyServerSetChangeBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3238,
                                "src": "5215:23:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3260,
                              "name": "resetResponses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3501,
                              "src": "5189:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint256_$returns$__$",
                                "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint256)"
                              }
                            },
                            "id": 3263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5189:50:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3264,
                          "nodeType": "ExpressionStatement",
                          "src": "5189:50:8"
                        }
                      ]
                    }
                  },
                  "id": 3267,
                  "nodeType": "IfStatement",
                  "src": "4974:276:8",
                  "trueBody": {
                    "id": 3255,
                    "nodeType": "Block",
                    "src": "5019:84:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3249,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5033:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "keyServerSetChangeBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2996,
                            "src": "5033:33:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3252,
                            "name": "keyServerSetChangeBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3238,
                            "src": "5069:23:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5033:59:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3254,
                        "nodeType": "ExpressionStatement",
                        "src": "5033:59:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3269
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3269,
                      "name": "keyServerMask",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "5313:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5313:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3276,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5346:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5338:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 3272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5338:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3273,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3228,
                          "src": "5352:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5338:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3275,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5337:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5313:54:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3277,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5382:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3278,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "respondedKeyServersMask",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2998,
                            "src": "5382:33:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3279,
                            "name": "keyServerMask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3269,
                            "src": "5418:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5382:49:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3281,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5381:51:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5436:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5381:56:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3288,
                  "nodeType": "IfStatement",
                  "src": "5377:121:8",
                  "trueBody": {
                    "id": 3287,
                    "nodeType": "Block",
                    "src": "5439:59:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3284,
                            "name": "ResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "5460:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 3285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Unconfirmed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5460:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "functionReturnParameters": 3236,
                        "id": 3286,
                        "nodeType": "Return",
                        "src": "5453:34:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3290
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3290,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "5535:21:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3289,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5535:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3297,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3291,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5559:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3292,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responsesSupport",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3004,
                        "src": "5559:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                          "typeString": "mapping(bytes32 => uint8)"
                        }
                      },
                      "id": 3294,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3293,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3232,
                        "src": "5586:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5559:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5598:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5559:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5535:64:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3298,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5609:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3300,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersMask",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2998,
                      "src": "5609:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "|=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3301,
                      "name": "keyServerMask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3269,
                      "src": "5646:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5609:50:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3303,
                  "nodeType": "ExpressionStatement",
                  "src": "5609:50:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5669:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "5669:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5707:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5669:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3309,
                  "nodeType": "ExpressionStatement",
                  "src": "5669:39:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3310,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3226,
                          "src": "5718:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3313,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responsesSupport",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3004,
                        "src": "5718:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                          "typeString": "mapping(bytes32 => uint8)"
                        }
                      },
                      "id": 3314,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3312,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3232,
                        "src": "5745:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5718:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3315,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5757:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5718:54:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3317,
                  "nodeType": "ExpressionStatement",
                  "src": "5718:54:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3318,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5786:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5805:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5786:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3330,
                  "nodeType": "IfStatement",
                  "src": "5782:85:8",
                  "trueBody": {
                    "id": 3329,
                    "nodeType": "Block",
                    "src": "5808:59:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3326,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3232,
                              "src": "5847:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3321,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "5822:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              "id": 3324,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3009,
                              "src": "5822:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 3325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5822:24:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 3327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5822:34:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3328,
                        "nodeType": "ExpressionStatement",
                        "src": "5822:34:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3331,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "5880:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3332,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "5899:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3333,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxResponseSupport",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3006,
                      "src": "5899:28:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5880:47:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3352,
                  "nodeType": "IfStatement",
                  "src": "5876:309:8",
                  "trueBody": {
                    "id": 3351,
                    "nodeType": "Block",
                    "src": "5929:256:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3335,
                              "name": "responses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "5943:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                              }
                            },
                            "id": 3337,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "maxResponseSupport",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3006,
                            "src": "5943:28:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3338,
                            "name": "responseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "5974:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "5943:46:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 3340,
                        "nodeType": "ExpressionStatement",
                        "src": "5943:46:8"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3341,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3230,
                            "src": "6076:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3342,
                              "name": "responseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3290,
                              "src": "6089:15:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6107:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "6089:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "6076:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3350,
                        "nodeType": "IfStatement",
                        "src": "6072:103:8",
                        "trueBody": {
                          "id": 3349,
                          "nodeType": "Block",
                          "src": "6110:65:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3346,
                                  "name": "ResponseSupport",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2994,
                                  "src": "6135:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                    "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                  }
                                },
                                "id": 3347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Confirmed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6135:25:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                  "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                                }
                              },
                              "functionReturnParameters": 3236,
                              "id": 3348,
                              "nodeType": "Return",
                              "src": "6128:32:8"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3354
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3354,
                      "name": "keyServersLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 3378,
                      "src": "6259:20:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3353,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6259:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3360,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3355,
                        "name": "keyServersCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3060,
                        "src": "6282:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                          "typeString": "function () view returns (uint8)"
                        }
                      },
                      "id": 3356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6282:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3357,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "6302:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3358,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "6302:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6282:54:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6259:77:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3361,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3230,
                      "src": "6350:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 3367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "responses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "6362:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                              "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maxResponseSupport",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3006,
                          "src": "6362:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3364,
                          "name": "keyServersLeft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3354,
                          "src": "6393:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "6362:45:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6410:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6362:49:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6350:61:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3373,
                  "nodeType": "IfStatement",
                  "src": "6346:125:8",
                  "trueBody": {
                    "id": 3372,
                    "nodeType": "Block",
                    "src": "6413:58:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3369,
                            "name": "ResponseSupport",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "6434:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                              "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                            }
                          },
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Impossible",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6434:26:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        "functionReturnParameters": 3236,
                        "id": 3371,
                        "nodeType": "Return",
                        "src": "6427:33:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3374,
                      "name": "ResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2994,
                      "src": "6488:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 3375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "Unconfirmed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6488:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "functionReturnParameters": 3236,
                  "id": 3376,
                  "nodeType": "Return",
                  "src": "6481:34:8"
                }
              ]
            },
            "documentation": "Insert key server confirmation.",
            "id": 3378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insertResponse",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3226,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4617:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3225,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "4617:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3228,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4661:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3227,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4661:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3230,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4691:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3229,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4691:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3232,
                  "name": "response",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4716:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3231,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4716:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:126:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3378,
                  "src": "4752:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                    "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3234,
                    "name": "ResponseSupport",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2994,
                    "src": "4752:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4751:17:8"
            },
            "scope": 3512,
            "src": "4584:1938:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3406,
              "nodeType": "Block",
              "src": "6637:155:8",
              "statements": [
                {
                  "body": {
                    "id": 3404,
                    "nodeType": "Block",
                    "src": "6704:82:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6718:57:8",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3395,
                                "name": "responses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3380,
                                "src": "6725:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                }
                              },
                              "id": 3396,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responsesSupport",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3004,
                              "src": "6725:26:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                                "typeString": "mapping(bytes32 => uint8)"
                              }
                            },
                            "id": 3401,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3397,
                                  "name": "responses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3380,
                                  "src": "6752:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                                  }
                                },
                                "id": 3398,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responses",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3009,
                                "src": "6752:19:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 3400,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3399,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3384,
                                "src": "6772:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6752:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6725:50:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3403,
                        "nodeType": "ExpressionStatement",
                        "src": "6718:57:8"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3387,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3384,
                      "src": "6667:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3388,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3380,
                          "src": "6671:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3389,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3009,
                        "src": "6671:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3390,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6671:26:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6667:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3405,
                  "initializationExpression": {
                    "assignments": [
                      3384
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3384,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3407,
                        "src": "6652:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6652:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3386,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6664:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6652:13:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6699:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3392,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3384,
                        "src": "6701:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3394,
                    "nodeType": "ExpressionStatement",
                    "src": "6699:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6647:139:8"
                }
              ]
            },
            "documentation": "Clear responses before removal.",
            "id": 3407,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearResponses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3380,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3407,
                  "src": "6592:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3379,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "6592:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6591:36:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3382,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6637:0:8"
            },
            "scope": 3512,
            "src": "6568:224:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3456,
              "nodeType": "Block",
              "src": "6916:265:8",
              "statements": [
                {
                  "body": {
                    "id": 3454,
                    "nodeType": "Block",
                    "src": "6969:206:8",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3426,
                              "name": "requests",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3410,
                              "src": "6987:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[] storage pointer"
                              }
                            },
                            "id": 3428,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3427,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3416,
                              "src": "6996:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6987:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3429,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3412,
                            "src": "7002:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6987:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3453,
                        "nodeType": "IfStatement",
                        "src": "6983:182:8",
                        "trueBody": {
                          "id": 3452,
                          "nodeType": "Block",
                          "src": "7011:154:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3431,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7029:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3433,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3432,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3416,
                                    "src": "7038:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7029:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3434,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7043:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3439,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3435,
                                        "name": "requests",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3410,
                                        "src": "7052:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                          "typeString": "bytes32[] storage pointer"
                                        }
                                      },
                                      "id": 3436,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7052:15:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7070:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "7052:19:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7043:29:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "7029:43:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3441,
                              "nodeType": "ExpressionStatement",
                              "src": "7029:43:8"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3442,
                                    "name": "requests",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3410,
                                    "src": "7090:8:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[] storage pointer"
                                    }
                                  },
                                  "id": 3444,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7090:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3445,
                                      "name": "requests",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3410,
                                      "src": "7108:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                        "typeString": "bytes32[] storage pointer"
                                      }
                                    },
                                    "id": 3446,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7108:15:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7126:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "7108:19:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7090:37:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3450,
                              "nodeType": "ExpressionStatement",
                              "src": "7090:37:8"
                            },
                            {
                              "id": 3451,
                              "nodeType": "Break",
                              "src": "7145:5:8"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3419,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3416,
                      "src": "6943:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3420,
                        "name": "requests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3410,
                        "src": "6947:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[] storage pointer"
                        }
                      },
                      "id": 3421,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6947:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6943:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3455,
                  "initializationExpression": {
                    "assignments": [
                      3416
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3416,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3457,
                        "src": "6931:6:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3415,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6931:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3418,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6940:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6931:10:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6964:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3423,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3416,
                        "src": "6966:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3425,
                    "nodeType": "ExpressionStatement",
                    "src": "6964:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6926:249:8"
                }
              ]
            },
            "documentation": "Remove request id from array.",
            "id": 3457,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeRequestKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3410,
                  "name": "requests",
                  "nodeType": "VariableDeclaration",
                  "scope": 3457,
                  "src": "6862:26:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3408,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6862:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3409,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6862:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3412,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 3457,
                  "src": "6890:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6890:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6861:45:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3414,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6916:0:8"
            },
            "scope": 3512,
            "src": "6836:345:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3500,
              "nodeType": "Block",
              "src": "7313:288:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3465,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7338:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      ],
                      "id": 3464,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "7323:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 3466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7323:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3467,
                  "nodeType": "ExpressionStatement",
                  "src": "7323:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7358:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3470,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keyServerSetChangeBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2996,
                      "src": "7358:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3471,
                      "name": "keyServerSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3461,
                      "src": "7394:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7358:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3473,
                  "nodeType": "ExpressionStatement",
                  "src": "7358:59:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3474,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7427:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersMask",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2998,
                      "src": "7427:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7463:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7427:37:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3479,
                  "nodeType": "ExpressionStatement",
                  "src": "7427:37:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3480,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7474:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3482,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "respondedKeyServersCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3000,
                      "src": "7474:34:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7511:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7474:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3485,
                  "nodeType": "ExpressionStatement",
                  "src": "7474:38:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3486,
                        "name": "responses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "7522:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                        }
                      },
                      "id": 3488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maxResponseSupport",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3006,
                      "src": "7522:28:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7553:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7522:32:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3491,
                  "nodeType": "ExpressionStatement",
                  "src": "7522:32:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3492,
                          "name": "responses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3459,
                          "src": "7564:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                            "typeString": "struct SecretStoreServiceBase.RequestResponses storage pointer"
                          }
                        },
                        "id": 3495,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3009,
                        "src": "7564:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7564:26:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7593:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7564:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3499,
                  "nodeType": "ExpressionStatement",
                  "src": "7564:30:8"
                }
              ]
            },
            "documentation": "Reset responses.",
            "id": 3501,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resetResponses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3459,
                  "name": "responses",
                  "nodeType": "VariableDeclaration",
                  "scope": 3501,
                  "src": "7236:34:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3458,
                    "name": "RequestResponses",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3010,
                    "src": "7236:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                      "typeString": "struct SecretStoreServiceBase.RequestResponses"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "keyServerSetChangeBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3501,
                  "src": "7272:31:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7272:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7235:69:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 3463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7313:0:8"
            },
            "scope": 3512,
            "src": "7212:389:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3503,
            "name": "keyServerSetAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7649:35:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3502,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "7649:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3507,
            "name": "balances",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7723:45:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 3506,
              "keyType": {
                "id": 3504,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7732:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "7723:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 3505,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7743:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3511,
            "name": "requests",
            "nodeType": "VariableDeclaration",
            "scope": 3512,
            "src": "7799:54:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RequestResponses_$3010_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreServiceBase.RequestResponses)"
            },
            "typeName": {
              "id": 3510,
              "keyType": {
                "id": 3508,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7808:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "7799:37:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RequestResponses_$3010_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreServiceBase.RequestResponses)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3509,
                "name": "RequestResponses",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3010,
                "src": "7819:16:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                }
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 3513,
        "src": "871:6985:8"
      }
    ],
    "src": "689:7168:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-01-23T09:53:59.503Z"
}